0

我的问题需要 2 个问题,但我会保持简短。所以我需要启动一个bat文件。现在我这样做:

public static void check() throws InterruptedException{
    try {
        Runtime.getRuntime().exec("cmd /c start build.bat");
        Thread.sleep(3000);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

bat 文件启动 java 编译器以编译另一个 java 文件并将错误消息定向到 txt 文件中。这是bat文件的样子:

@echo off
javac -Xstdout error.txt MainApp.java
exit

现在的问题是,我必须包含 3 秒的睡眠,以确保 error.txt 已创建并充满错误。这是非常不满意的。我要么需要 bat 文件的返回值,所以程序的其余部分会等待,直到它完成,或者需要一种从程序中启动 java 编译器并将错误消息定向到 txt 文件的方法。

谢谢大家。

4

1 回答 1

0

您可以使用Process#waitFor

如有必要,使当前线程等待,直到此 Process 对象表示的进程终止

Process p = Runtime.getRuntime().exec("cmd /c start build.bat"); 
p.waitFor();
于 2015-02-08T09:55:51.570 回答