此代码导致来自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.我做错了什么以及如何修复它?
答案 0 :(得分:4)
Process#exitValue的javadoc描述了它抛出异常的原因:
https://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#exitValue()
抛出:IllegalThreadStateException - 如果此Process对象表示的子进程尚未终止
在if语句之前使用proc.waitFor()
等待进程结束。