【问题标题】:capturing error message and to display in console (IDE)捕获错误消息并在控制台 (IDE) 中显示
【发布时间】:2013-03-30 09:45:32
【问题描述】:

我正在使用我的 java 程序中的 Processbuilder 作为后台进程运行一个 c++ 程序(makefile)。我正在使用 .getInputStream 捕获在我的 cmd 提示符中显示的值并显示在我的控制台 (IDE) 中。

    input = new BufferedReader(new InputStreamReader(p.getInputStream()));

            String line;
    try {
       while((line=input.readLine()) != null) {

            System.out.println(line);

这很好用。假设如果我在我的一个 c++ 文件中犯了一些错误,并且当我尝试运行 makefile 时,它​​没有捕获错误消息。在使用“cmd.exe”、“start”时,我可以在 cmd 提示符中查看错误,但它没有显示在控制台(IDE)中。

请问我应该怎么做才能显示错误消息。

1) System.err 和 printstream 可以解决这个问题吗?如果可以的话,请给我看一段代码示例。提前致谢

【问题讨论】:

  • 感谢 MadProgrammer。
  • 如果它是一个错误,我可以通过你提到的 redirectError 得到它。我可以通过.getInputStream 获得输出。如果我在后台运行 exe,它的处理不会被错误流或输入流捕获。我怎样才能得到它?
  • 如果使用redirectError,错误输出会被重定向到InputStream。尝试单独读取每个字符,而不是使用 BufferedReader#readLine
  • 试试看this example

标签: java outputstream system.out bytearrayoutputstream printstream


【解决方案1】:

Process 有 .getErrorStream() 或者您可以使用 MadProgrammer 的评论和这个 SO Question 中提到的 ProcessBuilder 的 .redirectErrorStream(): Java Process with Input/Output Stream

【讨论】:

  • @sreram 如果您喜欢某人的答案,或者它解决了您的问题,那么您应该对其进行投票和/或将其标记为最佳答案。评论不适用,但您仍然可以放弃。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多