Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javaw在启动外部应用程序时未终止_Java_Runtime.exec - Fatal编程技术网

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

Javaw在启动外部应用程序时未终止,java,runtime.exec,Java,Runtime.exec,我的应用程序启动本地Windows应用程序,例如使用JVM运行时的计算器 我将遵循来自的示例和教程 当我使用像dir-这样的shell命令时,我的应用程序将成功终止。但是,当我启动例如计算器时,我的应用程序仅在退出计算器后终止。 如何将启动的应用程序与JVM分离 这是我的密码: Runtime rt = Runtime.getRuntime(); System.out.println("Execing " + cmd[0] + " " + cmd[1]

我的应用程序启动本地Windows应用程序,例如使用JVM运行时的计算器

我将遵循来自的示例和教程

当我使用像dir-这样的shell命令时,我的应用程序将成功终止。但是,当我启动例如计算器时,我的应用程序仅在退出计算器后终止。 如何将启动的应用程序与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);        
有什么建议吗?

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


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

我希望终止我自己的线程。waitfor不是我的问题,我的主线程以exitcode 0结束。但是,我也想关闭我的JVM。