Javaw在启动外部应用程序时未终止

时间:2014-05-25 13:24:22

标签: java runtime.exec

我的应用程序启动本地Windows应用程序,例如使用JVM Runtime的Calculator。

我正在关注http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html

中的示例和教程

当我使用类似shell命令的dir-时,我的应用程序成功终止。但是,当我启动时,例如一个计算器,我的应用程序只在我退出计算器后终止。 如何将启动的应用程序与JVM分离?

这是我的代码:

            Runtime rt = Runtime.getRuntime();
        System.out.println("Execing " + cmd[0] + " " + cmd[1] 
                           + " " + cmd[2]);
        Process proc = rt.exec(cmd);
        // any error message?
        StreamGobbler errorGobbler = new 
            StreamGobbler(proc.getErrorStream(), "ERROR");            

        // any output?
        StreamGobbler outputGobbler = new 
            StreamGobbler(proc.getInputStream(), "OUTPUT");

        // kick them off
        errorGobbler.start();
        outputGobbler.start();

        // any error???
        int exitVal = proc.waitFor();
        System.out.println("ExitValue: " + exitVal);        

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您使用等待进程终止的proc.waitFor()。这就是为什么您的应用程序仅在启动的应用程序终止后终止的原因。

为什么要立即终止Java应用程序?通常,等待进程终止没有任何问题。否则,您无法获得子进程的退出值。