【问题标题】: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\"" 吗?

标签: java process processbuilder exit-code


【解决方案1】:

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

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

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

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

【讨论】:

  • 我遇到了与问题中描述的问题类似的问题。建议的解决方案解决了它。这应该被标记为正确答案。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
  • 1970-01-01
  • 2012-03-05
  • 2018-10-08
  • 2015-04-12
  • 2022-01-09
  • 2012-06-16
相关资源
最近更新 更多