我有一個調用一個可執行的jar的Java應用程序(主):等待完成Java的過程
Process p = Runtime.getRuntime().exec(java -jar C:\\PFC\\maestro.jar)
p.waitFor();
maestro.jar是創建2個線程的Java應用程序,並調用另一可執行的jar(其過程變量是「b」)。然後,我恨不得像這樣:
b.destroy(); //kill other executable jar that is called
manejadora.join(); //thread finished
controlador.join(); //thread finished
System.out.println("all finished");
maestro.jar正常運行,它顯示了在日食「終止」當我運行它,所以不存在任何問題。
當校長嘗試運行maestro.jar時,它運行正常,但是當maestro.jar已經完成時,校長持續在「p.waitFor()」上等待maestro.jar。
我不明白爲什麼。
你能給我一些關於這方面的定位嗎?非常感謝!
'Process.waitFor()'可能不破,因此,通過排除,這是最有可能的maestro.jar了'java.exe'過程中一直保持畢竟運行工作完成了。您可以使用Process Explorer輕鬆進行驗證。如果是這種情況,你必須弄清楚爲什麼子JVM不會終止,例如使用JVisualVM進行堆轉儲。 – Barend 2012-04-10 11:51:06