问题原由
今天为了方便测试直接在笔记本Windows上启动了kafka,结果报如下错误
E:\software\kafka_2.12-1.0.0\bin\windows>kafka-server-start.bat ....\config\server.properties
错误: 找不到或无法加载主类 Files\Java\jdk1.8.0_161\lib;D:\Program
Windows-start-server.png
问题分析
图上可以分析出,path路径包含空格需要使用引号,而我们的kafka启动文件没有正确处理路径中的空格,于是查看kakfa-server-start.bat,没有发现引用path的地方,但是可以看到它调用了kafka-run-class.bat,继而发现kafka-run-class.bat引用了classpath变量,问题到此就可以解决了。
解决办法
将 set CLASSPATH=%CLASSPATH%;"%~1" 修改为set CLASSPATH="%CLASSPATH%";"%~1"
server-start.png
额外信息
我的kafak 版本信息kafka_2.12-1.0.0。 使用了默认的server.properties, 其中数据是默认在
log.dirs=/tmp/kafka-logs, 我kafka在E盘的E:\software\kafka_2.12-1.0.0,我在E:\software\kafka_2.12-1.0.0\bin\windows路径下启动kafak,数据目录自动在E:\tmp\kafka-logs创建。
default0kafka-data-dir.png