4

ProcessBuilder を使用して Java で msys.bat を実行しようとしています。プログラムで .bat ファイルを実行すると、次のエラーが発生しました:「rxvt.exe または sh.exe バイナリが見つかりません -- 中止します。続行するには任意のキーを押してください . . .」

ここにコードがあります、

    ProcessBuilder Msys = new ProcessBuilder("C:/msys/1.0/msys.bat", "/C", "find \"C:/Users/Dan G/Desktop/hello.elf\"");

    Process p = Msys.start();

    String line;
    BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
    while ((line = r.readLine()) != null) {
        System.out.println(line);
    }
    r.close();

目標は、私のいくつかの C プロジェクトをコンパイルすることです。そこにあるコマンドは、私が達成したいことではなく、結果をテストするためのものです。

助けてくれてありがとう!

4

1 に答える 1

4

.bat ファイルは単独では実行できず、Windows コマンド プロセッサで呼び出されます。そのため、bat ファイルの前に、Windows コマンド プロセッサ (cmd.exe) もロードすることを忘れないでください。

ProcessBuilder Msys = new ProcessBuilder("cmd.exe", "C:/msys/1.0/msys.bat", 
       "/C", "find \"C:/Users/Dan G/Desktop/hello.elf\"");

編集
このプロセスで発生するヒントとトラップについては、この便利な記事をチェックしてください: when runtime.exec() will not . この記事のコードは少し古くなっていますが、概念は当時と同じように今日でも密接に関係しています。強くお勧めします。

于 2012-07-11T22:01:21.917 に答える