为什么我在ProcessBuilder --Java中收到IllegalThreadStateException错误?

时间:2017-06-01 19:23:20

标签: java process processbuilder exit-code

此代码导致来自if语句行的IllegalThreadStateException运行时错误:

public static void main(String args[]) throws IOException, InterruptedException {
    Runtime runtime = Runtime.getRuntime();
    Process proc = new ProcessBuilder("\"c:\\[directory]/doer.exe\"").start();
    if(proc.exitValue() == 1)
        System.out.println("Output: 1");
}

应该运行的可执行文件具有退出代码1.我做错了什么以及如何修复它?

1 个答案:

答案 0 :(得分:4)

Process#exitValue的javadoc描述了它抛出异常的原因:

https://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#exitValue()

  

抛出:IllegalThreadStateException - 如果此Process对象表示的子进程尚未终止

在if语句之前使用proc.waitFor()等待进程结束。