0

Javaを使用して絶対位置でバッチファイルを実行しようとしています。バッチファイルは、いくつかのJavaファイルをコンパイルします。

これが私が試しているコードです:

String s=file.getAbsolutePath() + "\\compile.bat";
Runtime rut = Runtime.getRuntime();
try {
    rut.exec(new String[] {file.getAbsolutePath() + "\\compile.bat"});
}catch(IOException e1) {
    e1.printStackTrace();
}
System.out.println(s);

これで、このコードを実行してもコンソールエラーは発生しませんが、バッチファイルは実行されません。ただし、Windowsエクスプローラーでバッチファイルを実行すると、バッチファイルは機能し、ファイルをコンパイルして、完了すると閉じます。

4

3 に答える 3

2

コンソールエラーがなかったことをどうやって知ることができますか?

これを試して:

String s=file.getAbsolutePath() + "\\compile.bat";
Runtime rut = Runtime.getRuntime();
try {
    Process process = rut.exec(new String[] {file.getAbsolutePath() + "\\compile.bat"});
    // prints out any message that are usually displayed in the console
    Scanner scanner = new Scanner(process.getInputStream());
    while (scanner.hasNext()) {
        System.out.println(scanner.nextLine());
    }
}catch(IOException e1) {
    e1.printStackTrace();
}
System.out.println(s);
于 2012-06-10T17:07:39.137 に答える
1

を使用してサブプロセスの戻り値を確認しexitValue()ます。getErrorStream()存在する値がゼロ以外の場合も、エラーストリームを読み取ります。

于 2012-06-10T17:06:07.933 に答える
0

Runtime.execの呼び出しを使用する場合、実行されるコマンドの作業ディレクトリは、Javaプロセスの現在作業ディレクトリになることに注意してください。バッチファイルは特定のディレクトリで実行する必要がありますか?

サブプロセスに特定の作業ディレクトリを設定する必要がある場合は、Runtime.execの別のバージョンを使用する必要があります。

于 2012-06-10T17:03:23.443 に答える