首先,这个问题发生在kafka被安装到桌面等路径的时候,安装在磁盘根目录时不会有这个问题。
根本原因是,kafka启动时,加载classpath,但这个classpath是脚本里拼接jar包绝对路径得来的。拼接结果超级长,而windows命令长度最长支持 8192 个字符,就报错了。
拼接classpath的语句,在kafka-run-class.bat,位置是93-95行。
%BASE_DIR%,是安装路径的绝对路径。循环拼接,安的位置越深,最后的拼接结果越长。安在盘符根目录,长度就正好合适。
那加载classpath的脚本,也在这里,是179行。
我的解决办法,比较简单:将93行的%BASE_DIR%,改为…,变成相对路径。