4

Java プロセス ビルダーを使用して .bat ファイルを実行しようとしていますが、プロセスが開始されません。ここで私が間違っていることを教えてください。file.bat を ./file.sh に置き換えると、このコードは Linux 環境で正常に動作します。

final ArrayList<String> command = new ArrayList<String>();
command.add(WORKING_DIR+File.separator+"file.bat");
final ProcessBuilder builder = new ProcessBuilder(command);
try {
    builder.redirectErrorStream(true);
    builder.start();
    } catch (IOException e) {
      logger.error("Could not start process." ,e);
} 
4

2 に答える 2

7

配列の最初の要素は実行可能ファイルでなければなりません。したがって、バッチ ファイルを呼び出すには、cmd.exe を呼び出す必要があります。

ProcessBuilder builder = new ProcessBuilder(Arrays.asList(new String[] {"cmd.exe", "/C", WORKING_DIR + File.separator + "file.bat"}));
于 2013-06-15T06:24:14.357 に答える
1

bat ファイルへのパスが正しいことを確認します。デバッガーを使用してデバッグするか、sysout を配置して、次のことを確認できます。

final ArrayList<String> command = new ArrayList<String>();
System.out.println("Batch file path : " + WORKING_DIR+File.separator+"file.bat")
command.add(WORKING_DIR+File.separator+"file.bat");
final ProcessBuilder builder = new ProcessBuilder(command);
try {
    builder.redirectErrorStream(true);
    builder.start();
    } catch (IOException e) {
      logger.error("Could not start process." ,e);
} 
于 2013-06-15T06:19:53.543 に答える