1. 在cmd下,java -jar ***.jar 运行后窗口不能关,但如果有多个jar,则会有多个cmd的窗口,很难看
2. 在cmd下,javaw -jar ***.jar运行后窗口可以关,但如果有多个jar,则进程中会有许多相同的javaw进程,无法区分那个是那个jar,很难去关闭某个jar的进程
为解决这两个问题
1. 为解决多个cmd的窗口问题:通过bat文件批量运行jar包,每个包用 start javaw -jar ***.jar来运行
2. 为解决进程难以区分问题:通过复制javaw.exe为对应jar包的文件名称来执行jar 包,诸如 abc.jar,复制javaw.exe 为 abc.exe,然后 start abc -jar abc.jar,这样进程中就是abc
3. 如果jar之间有执行依赖,则通过 ping 来给前一个jar提供执行时间
如下参考示例
set javaw="%JAVA_HOME%\bin\javaw.exe"
echo ******启动aaa.jar******
set aaa="%JAVA_HOME%\bin\aaa.exe"
rem 复制文件
if not exist %aaa% (
copy %javaw% %aaa%
)
start aaa -Xms128m -Xmx128m -jar aaa.jar
rem 等待8秒,ping一次1秒
ping -n 8 127.0.0.1>nul
echo *******启动bbb.jar******
set bbb="%JAVA_HOME%\bin\bbb.exe"
if not exist %bbb% (
copy %javaw% %bbb%
)
start bbb -Xms128m -Xmx128m -jar bbb.jar
ping -n 8 127.0.0.1>nul
上述有个不好的体验,每个jar执行是否正确,只能通过执行后jar是否提供了服务来验证,如果jar能输出日志就最好了,现在没有办法输出执行日志,即相当于把 java -jar aaa.jar在cmd中的日志输出到文件,但start aaa -jar aaa.jar 是无法输出日志。