本人用的版本是 apache-zookeeper-3.7.0-bin
网上说是在zkServer.cmd最后一行加入pause,就可以看到错误信息,然而我加了后,执行zkServer.cmd也还是闪退。然后百度发现pause是起到一个暂停的作用,如果在执行到之前bat就退出了,就没意义了,所以我穿插在所有行都写入一个pause,发现执行到这一行时闪退
call "%~dp0zkEnv.cmd"
这里表示是调用了zkEnv.cmd,于是我又在这个bat中每一有效行穿插pause,然后直接执行zkEnv.cmd,发现执行到这个if判断时闪退
if not exist "%JAVA_HOME%"\bin\java.exe ( echo Error: JAVA_HOME is incorrectly set: %JAVA_HOME% echo Expected to find java.exe here: %JAVA_HOME%\bin\java.exe goto :eof )
在这个判断前使用echo打印,打印结果:
echo "%JAVA_HOME%\bin\java.exe"
打印出来发现jdk位置是正确的:C:\Program Files (x86)\Java\jdk1.8.0_201\bin\java.exe
然后我怀疑是Program Files (x86)这个路径存在空格或者是括号啥的特殊字符,导致无法正常识别,为了排查,复制一份java目录及其下所有文件到D盘根目录,在bat中set后再echo打印
set JAVA_HOME=D:\Java\jdk1.8.0_201 echo "%JAVA_HOME%\bin\java.exe"
打印结果:
"D:\Java\jdk1.8.0_201\bin\java.exe"
这次终于不闪退了
综上来说,得出结论:
1.JAVA JDK 的路径尽量不要带有特殊字符、中文字符等识别会出错的字符
2.bat中不是写上了pause就一定能阻止强退的,一定要搞清楚强退的原因,才能对症下药。必要的时候每一有效行后面都加pause,来定位出错的位置,再进一步解决问题
后续我这边报的错为无效配置(invalid config exiting abnormally)
参考这位朋友的文章,问题得到解决
zkServer.cmd报错invalid config exiting abnormally解决_sinat_36748650的博客-CSDN博客在zookeeper的conf文件目录下新建zoo.cfg,把zoo_sample.cfg的内容复制到这里面去修改里面内容:dataDir=f:\java study\datadataLogDir=f:\java study\log其中自己创建data和log目录,将对应路径写在zoo.cfg即可。...https://blog.csdn.net/sinat_36748650/article/details/85807716