在 Java 应用程序中,我需要运行外部控制台应用程序。对于窗口的一切都很好:
try {
System.out.println("Running...");
Runtime.getRuntime().exec("notepad.exe");
System.out.println("End.");
}
catch(Exception e) {
System.out.println(e.getMessage());
}
成功启动记事本。
但是如果我把 D:\\MyProg.exe
或 .bat
甚至 cmd.exe
(这是作为记事本的 PATH是)它不起作用。无一异常(exception)。只是:
Running...
End.
最佳答案
首先,Runtime.exec()
很可能会异步返回,因此只需打印“end”就始终有效,因为 exec 调用会立即返回,这就是您所看到的。
这里可能会出现很多其他问题。我认为正在发生的情况是,您正在调用的程序可能会在您无法读取的标准输出上输出 I/O,或者您可能需要 wait for it to finish在退出java进程之前。有一个great article关于 Runtime.exec()
的各种问题,您可能应该阅读,它涵盖了这个问题和其他问题。
关于java - 从 Java 启动外部控制台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2873553/