导读 | 构建Kafka工程和源码阅读环境、Scala语言热身
环境准备
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了如何构建Kafka的源码环境以及对其进行调试的步骤。作者首先介绍了在阅读Kafka源码之前需要做的准备工作,包括安装Java、Gradle、Scala、IDE和Git等工具软件。然后详细介绍了在不同操作系统下搭建环境的步骤,并给出了相应的命令和注意事项。接着,作者讲解了如何构建Kafka工程,包括下载Kafka源代码、执行构建命令以及常用的构建命令。最后,作者介绍了Kafka工程的各个目录以及文件,并给出了一些常用的构建命令,帮助读者快速了解Kafka源码的结构和构建方法。另外,文章还介绍了Scala语言的语法特点,并给出了一些真实的Kafka源码片段来帮助读者热身。整篇文章内容详实,适合想要深入了解Kafka源码的读者阅读。
《Kafka 核心源码解读》,新⼈⾸单¥59
全部留言(91)
- 最新
- 精选
- 胡夕置顶你好,我是胡夕。 我最近看到了一些在搭建环境时经常遇到的问题,根据这些问题,我丰富了一下这节课的部分内容,并且针对可能会遇到的一些异常,补充了解决方案,希望可以解决你的问题。如果还有其他问题,欢迎留言,我会尽快给你解答~2020-04-26412
- 小文同学我自己在拉取 github kafka 项目的时候遇到超时的问题。通过 码云 做中介完成了快速拉取,步骤写在了博客里了。 https://juejin.im/post/5e954374e51d4546f03d9a27
作者回复: 厉害!很棒的总结~
2020-04-15216 - 高舒扬老师,您好。之前也看过很多项目的源码,一直比较困惑的怎么构建自己的代码阅读笔记系统。总感觉读懂了,但不能很好的把读代码的结果记录下来。不知道老师在这方面有什么好的建议吗?
作者回复: 我的一个建议是:不要认为能把每行代码加上注释就表示自己已经懂了。明白源码的2个标志是:1. 能够自行调试源码;2. 能够在源码上独立编写高阶功能。
2020-04-1613 - 小虞仔该脚本有一行代码: exec $(dirname $0)/kafka-run-class.sh kafka.tools.ConsoleProducer "$@" 可以看到,调用了kafka-run-class.sh,看脚本的名字,应该就是用来执行kafka某个类的,并且传入了kafka.tools.ConsoleProducer这个参数 所以,对应的Java类是kafka.tools.ConsoleProducer
作者回复: Bingo!
2020-04-1339 - 灰机胡老师您好, 我看您是mac运行的kafka,方便配置上您的gradle 版本 jdk版本 scala版本么? 我在用mac执行kafka 的时候 发现Execution failed for task ':core:Kafka.main()'. > Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1 换了很多个版本都可以 windows已经成功执行,但是mac就是死活无法执行 。
作者回复: 我的环境上,jdk版本是build 1.8.0_181-b13,Scala版本是2.12.11,Kafka gradle wrapper用的Gradle版本是5.6.2
2020-04-1754 - Geek_58afe9是看master分支吗?
作者回复: 嗯嗯,我们这次选用trunk分支。Kafka社区里面主干分支叫trunk
2020-04-1424 - 懂码哥(GerryWen)2020-06-28 拉取trunk代码,gradle版本号6.5.0 Scala版本号2.13.3 版本必须匹配一致,不然 ./gradlew build 会报错。 最新推荐 ./gradlew jar
作者回复: 强
2020-06-2823 - Geek_904551很困惑 为什么不拉取某一个固定版本的代码,而是去拉trunk,trunk随时更新,后面的人看到的代码和你讲解的代码到时候出入又会很大。看了一下本文也没有标识到底用的哪个kafka版本。还望作者能给出到底是基于哪个kafka版本进行的分析!我觉得这点很重要
作者回复: 嗯嗯,很好的建议。使用trunk的初衷是在短短出课程的这段时间,trunk也不太可能有太大的修改。让大家使用trunk就会有每天更新的感觉,有真实参与到社区的感觉。这点比弄懂源码本身要重要得多
2021-06-1022 - 珍妮•玛仕多胡老师你好,我build中只有9个test用例build失败,在启动kafka.main时报错如下 2020-11-09T11:42:21.964+0800 [ERROR] [system.err] server.properties file 2020-11-09T11:42:21.964+0800 [ERROR] [system.err] --version Print version information and exit. 2020-11-09T11:42:21.998+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 2020-11-09T11:42:21.998+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] FAILURE: Build failed with an exception. 2020-11-09T11:42:21.999+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 2020-11-09T11:42:21.999+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong: 2020-11-09T11:42:21.999+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Execution failed for task ':core:Kafka.main()'. 2020-11-09T11:42:21.999+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Process 'command 'D:/software/java/jdk/bin/java.exe'' finished with non-zero exit value 1 2020-11-09T11:42:21.999+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 2020-11-09T11:42:21.999+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Try: 2020-11-09T11:42:21.999+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Run with --stacktrace option to get the stack trace. Run with --scan to get full insights. 2020-11-09T11:42:21.999+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 2020-11-09T11:42:21.999+0800 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Get more help at https://help.gradle.org 2020-11-09T11:42:21.999+0800 [ERROR] [org.gradle.internal.buildevents.BuildResultLogger] 2020-11-09T11:42:21.999+0800 [ERROR] [org.gradle.internal.buildevents.BuildResultLogger] BUILD FAILED in 2s 11:42:22: Task execution finished 'Kafka.main() --debug'.
作者回复: 这是因为不加参数启动Kafka,返回值不是0,IDE视为有问题。其实已经打印出了Kafka的帮助提示信息: “Print version information and exit.”
2020-11-0921 - 懂码哥(GerryWen)编译./gradlew jar报错 单独编译./gradlew srcJar 可以通过 编译 ./gradlew docsJar 文档报错。 gerrydeMBP:kafka gerry$ ./gradlew jar Starting a Gradle Daemon (subsequent builds will be faster) <-------------> 0% CONFIGURING [4s] > Configure project : Building project 'core' with Scala version 2.13.3 Building project 'streams-scala' with Scala version 2.13.3 <-------------> 4% EXECUTING [12s] > Task :core:compileJava FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':core:compileJava'. > Could not resolve all files for configuration ':core:compileClasspath'. > Could not find scala-library-2.13.3.jar (org.scala-lang:scala-library:2.13.3). Searched in the following locations: http://maven.aliyun.com/nexus/content/repositories/jcenter/org/scala-lang/scala-library/2.13.3/scala-library-2.13.3.jar * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0. Use '--warning-mode all' to show the individual deprecation warnings. See https://docs.gradle.org/6.5/userguide/command_line_interface.html#sec:command_line_warnings BUILD FAILED in 17s 9 actionable tasks: 6 executed, 3 up-to-date
作者回复: 看样子是修改了maven仓库地址。不过似乎依然是无法获取Scala 2.13
2020-06-2931