Java Process builder输出和错误重定向

Java Process builder输出和错误重定向,java,windows,processbuilder,Java,Windows,Processbuilder,我正在使用ProcessBuilder从另一个目录运行一个可执行文件。我还将输出和错误重定向到本地目录中的文件。但奇怪的是,我的错误文件显示了可执行文件的输出,而输出文件是空的。我不知道发生了什么事,有人能告诉我一些情况吗 我的代码: File outputFile = new File("outputLog.txt"); File errorFile = new File("ErrLog.txt"); List<String> command = Arrays.asList("c

我正在使用
ProcessBuilder
从另一个目录运行一个可执行文件。我还将输出和错误重定向到本地目录中的文件。但奇怪的是,我的错误文件显示了可执行文件的输出,而输出文件是空的。我不知道发生了什么事,有人能告诉我一些情况吗

我的代码:

File outputFile = new File("outputLog.txt");
File errorFile = new File("ErrLog.txt");

List<String> command = Arrays.asList("c:\\dataloader\\TestDataLoader.exe", "-h");       
ProcessBuilder probuilder = new ProcessBuilder(command);

//redirect output
probuilder.redirectOutput(outputFile);
probuilder.redirectError(errorFile);

Process process = probuilder.start();
process.waitFor();

printFile(errorFile);    //writes to file
printFile(outputFile);   //writes to file

int exitValue = process.exitValue();
System.out.println("\n\nExit Value is " + exitValue);
File outputFile=新文件(“outputLog.txt”);
File errorFile=新文件(“ErrLog.txt”);
List命令=Arrays.asList(“c:\\dataloader\\TestDataLoader.exe”,“-h”);
ProcessBuilder probuilder=新建ProcessBuilder(命令);
//重定向输出
重定向输出(outputFile);
probuilder.redirectError(错误文件);
Process=probuilder.start();
process.waitFor();
打印文件(错误文件)//写入文件
打印文件(输出文件)//写入文件
int exitValue=process.exitValue();
System.out.println(“\n\n下一个值为”+exitValue);

也许
TestDataLoader.exe
将常规输出写入
STDERR
而不是
STDOUT
,这不是第一个这样做的程序。您能否以导致错误的方式执行
TestDataLoader.exe
,并检查常规输出文件中的错误?另外,您是否按照Jonny所说的创建了
TestDataLoader.exe
?+1。当使用
-h
调用某些命令以打印帮助时,在stderr而不是stdout上执行此操作(Linux上的示例:
bzip2-h>/dev/null
仍显示帮助文本,因为它是打印到stderr的)。