【问题标题】:Exec Command doesnt seem to be executing properly in javaExec Command 似乎没有在 java 中正确执行
【发布时间】:2011-03-28 13:34:00
【问题描述】:

我有一个构建的 java 项目,我想从另一个 java 程序运行。但是当我使用 exec 命令调用它时,它不会立即执行,而是等待当前程序结束。如果我添加一个 waitFor 语句,那么程序会挂起,因为主程序等待进程并且进程正在等待主程序。有谁知道我该如何解决这个问题?或者为什么它会以这种方式表现?我需要这个 jar 文件在第二个之前执行。

Runtime.getRuntime().exec("java -jar \"JavaProject1/dist/JavaProject1.jar\"");
        System.out.println("Hello");
        p.waitFor();

jar 文件的位置很好,它会打印 hello。我要运行的 jar 文件的主类在这个线程中DaniWeb

【问题讨论】:

  • 你到底想做什么?启动 Java 应用程序并继续当前处理?

标签: java exec runtime.exec


【解决方案1】:

除其他事项外,您必须不断读取进程 STDOUT 和 STDERR,否则会阻塞。

例如,请参阅http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

【讨论】:

    【解决方案2】:

    为什么会这样?

    因为您正在自己的程序中创建死锁。

    当您添加 waitFor() 时,您的程序 ma​​in() 在这种情况下会等待外部进程完成。

    当外部进程正常结束时返回零。

    可能是外部程序有问题

    【讨论】:

    • 外部程序自行运行良好。是的,我知道等待我没有得到的目的是为什么外部进程没有执行?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    相关资源
    最近更新 更多