在java中运行二进制文件时出现异常错误

时间:2013-01-12 18:29:01

标签: java

如何使用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.

我的问题是我想收到错误消息,就像我在计算机上的控制台上出现错误一样。在这种情况下如何使用正确的例外?

感谢。

2 个答案:

答案 0 :(得分:1)

您可以检查错误流,如

Process process=localRuntime.exec(strExec);
process.waitFor();
InputStream errorStream = process.getErrorStream();

答案 1 :(得分: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执行上述操作。