1

我有一个调用可执行 jar 的 java 应用程序(主体):

Process p = Runtime.getRuntime().exec(java -jar C:\\PFC\\maestro.jar)
p.waitFor();

maestro.jar 是一个 Java 应用程序,它创建 2 个线程,并调用另一个可执行 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 运行正确,当我运行它时它在 Eclipse 上显示“终止”,所以没有问题。

当主体尝试运行 maestro.jar 时,它会正确运行,但是当 maestro.jar 已经完成时,主体会继续在“p.waitFor()”上等待 maestro.jar。

我不明白为什么。

你能给我一些关于这个的方向吗?非常感谢!

4

2 回答 2

3

这可能是因为进程可能会在控制台上输出您没有在单独的线程中使用的东西。阅读这篇文章了解更多信息:

http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

apache exec 库很好地为您完成所有这些事情.. 使用该库来解决您的问题..

http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

于 2012-04-10T11:52:26.417 回答
0

问题解决了。

我不得不退出所有“System.out.println();” 句子。

所以我必须做一个日志才能看到程序活动。

谢谢大家 :-)

于 2012-04-12T10:40:58.647 回答