1

我正在尝试使用以下方法从我的 java swing 应用程序启动一个外部程序:

Process proc = Runtime.getRuntime().exec(cmd);

但是在我关闭我的java应用程序之前,外部程序永远不会真正启动......每次。只有在我关闭后它才会等待启动。

我试图运行的外部程序是一个带有参数的 exe,因此:

cmd = "externalProgram.exe -v --fullscreen --nowing";

这里可能有什么问题。有趣的是,如果我尝试一些简单的事情,它会按预期工作:

Process proc = Runtime.getRuntime().exec("notepad.exe");
4

2 回答 2

7

您可能需要读取进程的标准输出,或关闭标准输入,然后才能继续。对于读取输出,问题是缓冲区会变满,阻塞程序;对于关闭输入,问题是如果数据可用,某些程序会尝试从那里读取数据,等待这样做。这些技巧中的一个或两个很可能会为您解决问题。

于 2011-04-10T01:39:37.833 回答
2

您还可以阅读错误输出流以检查程序实际上没有成功执行

String cmd = "svn.exe";
Process proc = Runtime.getRuntime().exec(cmd);
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
String line = null;
while((line=reader.readLine())!=null){
   System.out.println(line);
}
reader.close();

我的控制台显示

键入“svn help”以了解用法。

这显然表明该程序是由 Java 执行的。

于 2011-04-10T01:46:49.670 回答