我有一个调用一个可执行的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