【问题标题】:How to reverse command line compilation error output?如何反转命令行编译错误输出?
【发布时间】:2013-08-03 18:38:43
【问题描述】:

每当编译导致错误输出超过一个屏幕时,我必须向后滚动以查看第一个错误(可能是后来错误的原因)并修复它。这在 Screen 中尤其痛苦,我首先必须按 ctrl+a Esc 才能滚动。

javac 中是否有一个命令行开关可以让错误消息以相反的顺序显示,或者是否有一些通用的命令行魔法可以达到相同的效果?

更新:澄清一下,我总是使用命令行进行编译,IDE 不是一个选项。

【问题讨论】:

  • 使用 IDE 怎么样?
  • 在 Linux 上,自然有一个简单的方法:javac ... | tail -r 但就我个人而言,我会使用javac ... | less,它会自动给我输出的第一屏。
  • @assylias 看到我的更新,我受不了 IDE。
  • @MarkoTopolnik Tail 抱怨没有 -r 开关。奇怪的是,less 将输出滚动到最后,就好像它根本没有通过管道传输一样。
  • @JoóÁdám 那么你可能没有意识到你错过了什么......

标签: java command-line compilation


【解决方案1】:

如果您想在第一个编译错误时停止,那么您可能应该使用-Xmaxerrs 1。您可以修复该错误并重新编译。

编辑 如果您在 *nix 环境下,将stderr 重定向到stdout 将使大多数工具如headmoreless 工作。编译错误打印到stderr

javac File.java 2>&1 | less

编辑2 您也可以使用-Xstdout filename将其发送到文件

【讨论】:

  • 技术上不是问题的答案,但我会接受,因为-Xmaxerrs 1 对我来说真的很好用。谢谢!
【解决方案2】:

在命令行上将输出通过管道传输到more,或者最好使用 Eclipse 之类的 IDE。

javac file.java | more

现在按 空格键 让输出滚动(或 enter 逐行),如果它超过一个屏幕页面。

【讨论】:

  • more,就像less一样,显示整个输出,滚动到最后一行(我也不明白)。
  • 这表示程序将信息写入 stderr,而不是 stdout
  • @RichardSitze 啊,这很有道理。感谢您的评论。
  • @RichardSitze 是的,我想到了,但我认为在一天结束时,默认情况下管道同时使用标准输出和标准错误。
猜你喜欢
  • 2017-05-16
  • 2016-08-31
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多