次のコードでJDK7u25を使用してcmdファイルを実行しようとしています:
try {
ProcessBuilder pb = new ProcessBuilder(cmd);
pb.directory(workingDir);
proc = pb.start();
} catch (IOException e) {
System.out.println(e.getMessage());
throw e;
}
// StdOut and Err Stream must be read immediatly even if they are not used
// any error message?
StreamInlet error = new StreamInlet(proc.getErrorStream(), "ERROR");
// any output?
StreamInlet output = new StreamInlet(proc.getInputStream(), "OUTPUT");
// kick them off
error.start();
output.start();
if (wait) {
try {
exitCode = proc.waitFor();
} catch (InterruptedException e) {
System.out.println("Waiting for process was interrupted");
}
if (addMetaInfo)
System.out.println("Return value = " + exitCode);
}
どこcmd=[cmd.exe, /c, C:\My Root\scripts\windows\tools\MyCLI.cmd, -c, C:\Local Disk D\My Tutorial\RegressionTests.xml, -d, 02_RecordViewer_Test, -l"ERROR"]
しかし、それは機能せず、次の出力が得られます。
「C:\My」は内部コマンドまたは外部コマンドとして認識されません。
操作可能なプログラムまたはバッチ ファイル。
cmdファイルを呼び出す前に、明示的な「CMD.EXE /C」を追加することにより、 JDK7U21の問題に必要な変更を既に行っています。また、JDK7u21 の問題で述べたように、ProcessBuilder クラスも使用しています。
実行しようとしている cmd ファイルが C:\MyRoot 、つまり名前にスペースが含まれていないフォルダーに配置されている場合、正常に動作します。
誰か助けてくれませんか?