0

执行二进制文件时如何获取错误消息Runtime

我的代码是:

Runtime localRuntime = Runtime.getRuntime();
String strExec = "myBinary -s -a myconfigbinary.conf";
try {
    localRuntime.exec(strExec);
    System.out.println("Success execute."); 
} catch (IOException e) {
    System.out.println(e.getMessage().toString());      
}

我的代码在上面,我只在文件不存在时得到异常错误。但是如果我在计算机上使用控制台运行时由于配置文件中的错误或导致二进制文件未运行的任何原因而无法正常工作,但我仍然收到消息Success execute.

我的问题是我想收到错误消息,例如当我在计算机的控制台上收到错误消息时。在这种情况下如何使用正确的异常?

谢谢。

4

2 回答 2

1

您还应该在 中捕获该ErrorStream过程java

try {
   Process proc = localRuntime.exec(strExec);
   InputStream stderr = proc.getErrorStream();
   InputStreamReader is = new InputStreamReader(stderr);
   BufferedReader br = new BufferedReader(is);
   String line = null;
   while ( (line = br.readLine()) != null)
          System.out.println(line);
   int exitVal = proc.waitFor();
   System.out.println("Process exitValue: " + exitVal);
} catch (Throwable t) {
    t.printStackTrace();
}

如果来自 exec'd 进程的错误变为stdout,则您可能还需要对 stdout 执行上述操作。

于 2013-01-12T18:39:00.580 回答
1

您可以检查错误流,例如

Process process=localRuntime.exec(strExec);
process.waitFor();
InputStream errorStream = process.getErrorStream();
于 2013-01-12T18:38:11.467 回答