Java:从命令行运行时重定向内部进程输出

标签 java windows eclipse java-7

我使用以下代码来重定向我从我的 Java 应用程序启动的进程的输出:

ProcessBuilder builder = new ProcessBuilder("MyProcess.exe");
builder.redirectOutput(Redirect.INHERIT);
builder.redirectErrorStream(true);

现在,当我从 eclipse 运行代码时,它工作正常 - 我可以在 Eclipse 的控制台中看到输出。
然而,当我创建一个 jar 文件并从 cmd 窗口运行它时,例如java -jar MyJar.jar,它不打印进程的输出。这可能是什么原因?

最佳答案

我知道我回答晚了,但我在找到答案之前就遇到了这个问题,并且想节省同一条船上的其他人一些搜索。

这实际上是 Windows 的一个已知错误:https://bugs.openjdk.java.net/browse/JDK-8023130

您可以通过自己重定向流来绕过它:

Process p = pb.start();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = br.readLine()) != null) {
   System.out.println(line);
}

p.waitFor();

br.close();

关于Java:从命令行运行时重定向内部进程输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19711665/

相关文章:

VB.NET - 如何创建信息框

c# - 单击 DataTemplate 中的项目时禁用 ListView 的 ItemClick (WP 8.1)

html - 1920x1080 高清/4k 屏幕 - 完美尺寸的网站内容会离开屏幕吗?

java - 我的控制台闪烁 - Java - Eclipse

java - 无法看到从 admob hello world android 程序添加

java - hibernate 搜索+ spring3 + jpa

java - char数组相当于Java中的String吗?

java - 什么是 NullPointerException,我该如何解决?

Eclipse Ant 构建 : how do I reference the current Eclipse path?

Java 无法及时收集垃圾