我正试图用我的java swing应用程序启动一个外部程序:
Process proc = Runtime.getRuntime().exec(cmd);
但是在我每次关闭我的java应用程序之前,外部程序实际上从未启动过。 它只在我关闭后等待启动。
我试图运行的外部程序是一个带参数的exe:
cmd = "externalProgram.exe -v --fullscreen --nowing";
这里可能有什么问题。 有趣的是,如果我尝试一些简单的事情,它会按预期工作:
Process proc = Runtime.getRuntime().exec("notepad.exe");
答案 0 :(得分:6)
您可能需要先阅读流程的标准输出,或关闭标准输入,然后才能继续。对于读取输出,问题是缓冲区可能已满,阻塞程序;为了关闭输入,问题是某些程序会尝试从那里读取数据,如果它可用,等待这样做。这些技巧中的一个或两个很可能会为你解决问题。
答案 1 :(得分: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执行的。