我有一个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上运行不正常。
答案 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