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

一些代码:

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();

最佳答案

这似乎是Windows下Java中的错误。将在Java 8中修复。
https://bugs.openjdk.java.net/browse/JDK-8023130
您可以使用旧方法并重定向流手册。

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


Process p = builder.start();

p.getOutputStream();
p.getInputStream();
p.getInputStream();

关于java - Java Process Builder重定向输出可在Eclipse中运行,而不是作为jar,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14766099/

10-11 22:23
查看更多