System.out.println()无法打印到Eclipse中的控制台

时间:2018-12-05 15:14:12

标签: java eclipse testing junit cucumber

我正在使用Java中的Cucumber,Selenium和JUnit开发一个测试自动化脚本。为了快速检测我的自定义代码中的任何问题,我将System.out.println("success")System.err.println("failure")放在某些地方。问题在于,这两个文件都无法打印到Eclipse中的控制台。尽管没有必要使用这些工具,但我已经完成了数百次。我怀疑是Cucumber还是JUnit是罪魁祸首,但是在Google进行一些查询后,我找不到任何可以证实这一点的东西。

我确实看到了:

  

System.out.println doesn't print anything inside eclipse console

但这不是问题。我的所有控制台都没有显示我的println()。

更新到目前为止我已经尝试过的:

  1. PrintStream out = System.out; System.setOut(out); System.out.println("hello");
  2. Eclipse Console not showing output
  3. 明确抛出异常(导致控制台中没有堆栈跟踪)

2 个答案:

答案 0 :(得分:2)

因此,事实证明,我使用的Eclipse版本(Eclipse Oxygen)存在一个错误。通常,在Eclipse中运行代码时,代码将以javaw.exe而不是java.exe的身份执行。两者之间的区别仅在于javaw.exe不使用CMD控制台,而java.exe则使用CMD控制台。通常,由于Eclipse拥有自己的控制台,因此将使用javaw执行,但是某些Eclipse版本(例如Oxygen)存在一个已知的错误,Eclipse无法正确处理此错误,因此您需要使其改用Java。为此:

转到“运行”>“运行配置”>确保在左侧选择了具有main方法的所需类>在右侧选择JRE>单击“运行时JRE”部分下的“ Alternate JRE”>选择Java可执行文件下的“ Alternate”并键入“ java”在字段>应用

enter image description here

答案 1 :(得分:0)

它可以在Eclipse中无关的项目中工作,但不能在您当前的项目中工作吗?我假设您使用一些库代码来调用System.setOut()(和类似的Err)来更改打印流。您可以尝试的是:

PrintStream out = System.out;
...
insert your library calls here
....
System.setOut(out);
System.out.println("Test out println");