为啥我在 ProcessBuilder --Java 中收到 IllegalThreadStateException 错误?
Posted
技术标签:
【中文标题】为啥我在 ProcessBuilder --Java 中收到 IllegalThreadStateException 错误?【英文标题】:Why am I getting an IllegalThreadStateException error in ProcessBuilder --Java?为什么我在 ProcessBuilder --Java 中收到 IllegalThreadStateException 错误? 【发布时间】:2017-06-01 19:23:19 【问题描述】:此代码导致带有 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。我做错了什么,我该如何解决?
【问题讨论】:
你想"\"c:\\[directory]\\doer.exe\""
吗?
【参考方案1】:
Process#exitValue 的 javadoc 描述了它抛出异常的原因:
https://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#exitValue()
抛出:IllegalThreadStateException - 如果此 Process 对象表示的子进程尚未终止
在 if 语句之前使用 proc.waitFor()
等待进程完成。
【讨论】:
我遇到了与问题中描述的问题类似的问题。建议的解决方案解决了它。这应该被标记为正确答案。谢谢以上是关于为啥我在 ProcessBuilder --Java 中收到 IllegalThreadStateException 错误?的主要内容,如果未能解决你的问题,请参考以下文章