1. 在cmd下,java -jar ***.jar 運行后窗口不能關(guān),但如果有多個jar,則會有多個cmd的窗口,很難看
2. 在cmd下,javaw -jar ***.jar運行后窗口可以關(guān),但如果有多個jar,則進(jìn)程中會有許多相同的javaw進(jìn)程,無法區(qū)分那個是那個jar,很難去關(guān)閉某個jar的進(jìn)程
為解決這兩個問題
1. 為解決多個cmd的窗口問題:通過bat文件批量運行jar包,每個包用 start javaw -jar ***.jar來運行
2. 為解決進(jìn)程難以區(qū)分問題:通過復(fù)制javaw.exe為對應(yīng)jar包的文件名稱來執(zhí)行jar 包,諸如 abc.jar,復(fù)制javaw.exe 為 abc.exe,然后 start abc -jar abc.jar,這樣進(jìn)程中就是abc
3. 如果jar之間有執(zhí)行依賴,則通過 ping 來給前一個jar提供執(zhí)行時間
如下參考示例
set javaw="%JAVA_HOME%\bin\javaw.exe"
echo ******啟動aaa.jar******
set aaa="%JAVA_HOME%\bin\aaa.exe"
rem 復(fù)制文件
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執(zhí)行是否正確,只能通過執(zhí)行后jar是否提供了服務(wù)來驗證,如果jar能輸出日志就最好了,現(xiàn)在沒有辦法輸出執(zhí)行日志,即相當(dāng)于把 java -jar aaa.jar在cmd中的日志輸出到文件,但start aaa -jar aaa.jar 是無法輸出日志。