0

我正在尝试编写一个小工具,如果它们已被终止,它会重新启动一定数量的 jar。

private static void checkAndRestartProcesses() {
    for ( int i=0; i<processes.size(); i++ ) {
        try {
            processes.get(i).exitValue();
            processes.remove(i);
        } catch (IllegalThreadStateException ex) {
        }
    }
    try {
        for ( int i=processes.size(); i<Config.NR_PROCESSES; i++ ) {
            ProcessBuilder pb = new ProcessBuilder("cmd", "/c start cmd /c java -jar bla.jar");
            Process p = pb.start();
            processes.add(p);
        }
    } catch (IOException ex) {
    }
}

问题在于,以“cmd start”启动的进程在执行子进程后立即退出(因此,没有 IllegalThreadStateException)。我如何跟踪子进程(无论它们是否被终止)?或者:如何在不使用“cmd start”的情况下在单独的 cmd 中启动子进程。我需要启动的例程在一个新的 cmd 中。

提前非常感谢。

4

1 回答 1

1

您需要在开始时使用 /wait 标志

cmd /c start /wait java -jar bla.jar
于 2012-08-16T22:45:23.920 回答