好的,我已经尝试了十几种不同的方法但没有成功。我想执行自定义exe并获取输出。它从命令提示符运行正常。我得到“目录”工作正常,但不是custom.exe。这是代码:
List<String> command = new ArrayList<String>();
command.add("cmd"); // Even removed these two lines
command.add("/c"); // aka hail mary coding.
//command.add("dir");
command.add("custom.exe"); // even tried "c://custom.exe"
String line;
Process p = new ProcessBuilder(command).start();
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
我根本没有输出。如果我将它放在批处理文件中,我会得到输出。我觉得它与%PATH%有关。回到它......
编辑 - &GT;事实证明,这个自定义exe的输出会出错,所以要看看发生了什么,我有代码:
List<String> command = new ArrayList<String>();
command.add(System.getenv("ProgramFiles(x86)") + "\\mydir\\custom.exe";
String line;
ProcessBuilder pb = new ProcessBuilder(command);
pb.redirectErrorStream(true);
Process p = pb.start();
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
它的效果就像一个热门的诅咒。 :)
答案 0 :(得分:2)
您不需要行
command.add("cmd");
command.add("/c");
只有批处理文件才需要这样做。我宁愿指定可执行文件的完整路径。
也许输出是在stderr上?尝试将p.getInputStream()
替换为p.getErrorStream()
。