为什么流程会运行但不显示?

时间:2014-02-07 21:24:48

标签: java process

我有一个java应用程序,可以下载并运行另一个程序。我遇到的问题是,当它运行程序时,没有视觉效果;但是,该过程显示在Windows任务管理器中。

以下是相关的执行代码:

String[] cmd = {System.getProperty("java.io.tmpdir") + PACKAGE_PATH + onePackage};
log.info("Package downloaded to: " + cmd[0]);
new ProcessBuilder(cmd[0]).start();

我还使用了Runtime.exec()并产生了相同的结果。

这是一个产生相同结果的Commons Exec版本:

String line = "cmd.exe start /c " + "\"" + cmd[0] + "\""; 
CommandLine cmdLine = CommandLine.parse(line);
DefaultExecutor executor = new DefaultExecutor();
int exitValue = executor.execute(cmdLine);

最后一点详细说明,它在Eclipse的Win7桌面上运行良好,但在Windows Server 2008 R2上运行不正常。

1 个答案:

答案 0 :(得分:3)

您可以使用以下代码执行此操作:

import java.io.IOException;

public class TestClass {
    public static void main(String[] args) throws IOException {
        Runtime rt = Runtime.getRuntime();  
        Process pr = rt.exec("cmd.exe /c mspaint.exe");
    }
}

与背景相比,这将导致mspaint.exe在前台启动。但是,由于您通过cmd.exe执行此过程,因此mspaint.exe启动后该过程立即结束,导致java程序完成其执行,无论mspaint.exe的状态如何,这可能适合您的情况

如果您需要等待它完成,我建议您查看Commons Exec