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

ここでの問題は、error.txt が作成され、エラーで満たされていることを確認するために、3 秒間のスリープを含める必要があることです。これは非常に不満です。私はバットファイルからの戻り値が必要なので、プログラムの残りの部分はそれが完了するまで待つ、プログラムからJavaコンパイラを起動してエラーメッセージをtxtファイルに送る方法を待ちます。

みんなありがとう。

4

1 に答える 1

0

You can use Process#waitFor:

Causes the current thread to wait, if necessary, until the process represented by this Process object has terminated

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