1

我正在使用流程构建器来启动新的主类。我这样做builder.inheritIO();了,它在 Eclipse 中工作(stdout 和 stderr 重定向到单个控制台)。但是,当我导出 jar 时,输出不会重定向(仅显示原始进程输出)。我在 Java 7 上。有什么我应该看的想法吗?

一些代码:

ProcessBuilder builder = new ProcessBuilder(arr);
//builder.redirectOutput();
//builder.redirectError();
//builder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
// those don't work either
builder.inheritIO();
Process p = builder.start();
4

1 回答 1

2

这似乎是windows下java中的一个bug。将在 java8 中修复。

https://bugs.openjdk.java.net/browse/JDK-8023130

您可以使用旧方式并重定向流手册。

ProcessBuilder builder = new ProcessBuilder("...");


Process p = builder.start();

p.getOutputStream();
p.getInputStream();
p.getInputStream();
于 2014-01-03T17:53:02.800 回答