修改kafka_run_class.bat并增加JRE_HOME判断

来源:互联网 发布:mac上qq截图快捷键 编辑:程序博客网 时间:2024/06/05 12:44

本文解决方案来源于:

博主:HoNooD

链接:http://blog.csdn.net/g5dsk/article/details/5802877



本文主旨:

1、修改kafka_run_class.bat脚本,并为之增加寻找JRE_HOME(jre环境变量)的判断

2、修改bat脚本后,执行错误:不是内部或外部命令,也不是可运行的程序或批处理文件



正文:

在公司项目集成kafka服务于exe安装包时,发现kafka_run_class.bat脚本只有调用JAVA_HOME环境变量,如下

rem Which java to use
IF ["%JAVA_HOME%"] EQU [""] (
rem "no java_home,find jre_home"
) ELSE (
rem "use java_home"
set JAVA="%JAVA_HOME%/bin/java"
)

而项目里集成式JRE_HOME,虽然可以直接将JRE_HOME改为JAVA_HOME,对kafka_run_class.bat没有影响,但是修改为JAVA_HOME后,tomcat service安装将出问题,所以,只好在kafka_run_class.bat中增加查找JRE_HOME的判断。如下:

rem Which java to use
IF ["%JAVA_HOME%"] EQU [""] (
rem "no java_home,find jre_home"
) ELSE (
rem "use java_home"
set JAVA="%JAVA_HOME%/bin/java"
)


IF ["%JRE_HOME%"] EQU [""] (
rem "no jre_home"
rem "set JAVA=java,if use %JAVA% WARNING:not commond"
set JAVA=java
) ELSE (
rem "use jre_home"
set JAVA="%JRE_HOME%/bin/java"
)


只需将此段覆盖源来的寻找JAVA_HOME的脚本即可。



注意:

在保存的时候务必查看保存的格式,博主使用的notepad++。如下


如果不更改格式,则会出现以下错误:



"控制台窗口 属性 -> 选项 -> 默认代码页" 中可以设置当前代码页.

1>. 如果当前代码页是 437(OEM - 美国), 则批处理路径和命令中的中文字符均不能被识别;

2>. 如果当前代码页是 936(ANSI/OEM - 简体中文 GBK), 那么当 .bat 文件以 ANSI 编码时, 路径以及命令参数中的中文字符可以正确识别; 以 UTF-8 without BOM 编码时, .bat 文件虽然可被识别, 但其中的中文字符和中文路径是不能识别的.

所以, 如果处理的命令或路径中包含中文字符, 请使用 ANSI 编码, 否则执行会出错.


另外:

1>. ANSI 和 UTF-8 without BOM 编码的 .bat 文件能被识别是因为文件头未插入任何特殊字节;

2>. UTF-8, Unicode(UCS-2 Little Endian) 以及 Unicode big endian(UCS-2 Big Endian) 编码的 .bat 文件执行时, 提示"×××不是内部或外部命令,也不是可运行的程序或批处理文件。" , 这是因为这三种编码格式的文件默认在文件头插入了特殊字节(即 BOM: Byte Order Mark). UTF-8 在文件头插入了 3 个字节 EF BB BF, Unicode 在文件头插入了 2 个字节 FF FE, Unicode big endian 在文件头插入了 2 个字节 FE FF. 它们不是 Windows 所能识别的命令, 所以相应编码格式的 .bat 文件执行出错.


阅读全文
0 0
原创粉丝点击