4

我正在使用 Runtime 类来执行软件的安装。但是,它不起作用,这意味着,在我触发作业(使用 Runtime 类创建)之后,一段时间(很快)安装作业就会退出。我认为问题在于主线程必须完成并因此终止使用 Runtime 类创建的进程。我对么 ?这里的解决方案是什么?

这就是我在主要课程中解雇我的工作的方式:

try
        {
            Runtime.getRuntime().exec(cmd);
        }                               
        catch(IOException e)    
        {   
            //add logging functionality
            e.printStackTrace();
        }

在这个命令之后不久,主函数就完成了。

运行时命令没有问题。它有效..我什至可以看到它开始(我通过代码触发的安装)然后它突然退出。

4

3 回答 3

5

您可能想查看 java.lang.Process 类。你可能想要这样的东西:

        Process process = Runtime.getRuntime().exec(cmd);
        process.waitFor();

子进程可能正在接收 SIGHUP 并退出。

编辑:

在上下文中,我会认为是这样的:

    try
    {
        Process process = Runtime.getRuntime().exec(cmd);
        process.waitFor();
    }                               
    catch(IOException e)    
    {   
        //add logging functionality
        e.printStackTrace();
    }
    catch(InterruptedException e)    
    {   
        e.printStackTrace();
    }
于 2012-06-21T12:53:25.473 回答
1

创建的进程是主线程的进程。如果主线程完成,进程将被终止,类似于手动执行命令并按下ctrlc或关闭窗口。

于 2012-06-21T12:54:52.820 回答
0

这只是一个疯狂的猜测,但我认为编程退出是因为你的代码中有错误(逻辑)可能是一个很快退出的 while 循环,

尝试查看运行时执行的代码。

该过程可能陷入僵局。解决方案在评论中,并附有示例。

于 2012-06-21T12:52:10.310 回答