3

Windows から生成された ant プロセスを破棄しても機能しません。Unix バリアントでは正常に動作しますが、Windows では動作しません。コード スニペットを以下に示します。戻りコードが正しい間 (1)、生成されたプロセスは完了するまで実行を続けます。Windows のみの問題です。何か案は?

        ProcessBuilder build = new ProcessBuilder();
    List<String> list = build.command();
    list.add("cmd");
    list.add("/C");
    list.add("ant");
    list.add("-f");
    list.add("HelloWorld.xml");

    try {
        Process p = build.start();          
        Thread.sleep(5000);
        p.destroy();        
        int i = p.waitFor();
        System.out.println(i);
    } catch (Exception e) {
        System.out.println(e);
    }
4

2 に答える 2

2

問題はProcess.destroy、プロセスの孫を殺さないことです。2002年以来、バグが開かれています。

cmd /c startとにかく、 Ant を呼び出すための新しいプロンプトを生成するのはなぜですか? それが要件でない場合は、電話してant.bat -f HelloWorld.xmlください。

アップデート

ant.bat willまた、子プロセスを生成します。taskkillを使用した回避策が役立つ場合があります。

于 2012-07-18T21:16:14.800 に答える
0

wmic (Windows プロセス リストを取得するため) と taskkill (実行中のプロセスを強制終了するため) を組み合わせて使用​​することで問題を解決しました。

于 2012-07-20T18:53:37.533 に答える