在 Ubuntu 环境下进行 Java 开发时,编译日志的查看是日常调试中不可或缺的环节。许多时候,编译错误或警告信息一闪而过,来不及仔细查看终端就关闭了,等到排查问题时又不得不重新编译一遍,相当浪费时间。下面整理几种常见的日志查看方式,方便你根据实际场景灵活选用。
1. 编译时直接输出日志到终端
在 Ubuntu 下编译 Java 文件时,默认情况下 javac 命令会直接将编译结果(包括错误和警告)打印到终端。如果你只想快速确认编译是否通过,这种方式最为直接。
但若你需要了解编译过程中具体发生了什么——例如类是如何加载的、任务的执行顺序是怎样的——就需要加上 -verbose 参数:

javac -verbose HelloWorld.java
执行后,终端会输出类加载、编译任务等详细过程。这些信息在排查某些隐蔽的编译问题时,往往能提供意想不到的线索。
2. 将编译日志重定向到文件
终端显示虽然方便,但日志一多容易刷屏,而且关闭终端后信息就会丢失。更推荐的做法是将日志保存到文件中,便于后续查阅。常用方式有两种:
- 仅保存标准输出(正常信息):
javac HelloWorld.java > compile.log - 保存标准输出 + 错误输出(推荐):
javac HelloWorld.java > compile.log 2>&1
这里的 2>&1 可能看起来有些绕,但含义很简单:将标准错误(即编译错误信息)也一并重定向到标准输出,这样无论是正常信息还是报错信息,都会写入 compile.log 文件中。在实际开发中,我更推荐第二种方式,因为它不会遗漏任何关键内容。
3. 查看已保存的编译日志文件
日志文件已生成,如何查看取决于你的具体需求:
- 如果只是想快速浏览完整内容,使用
cat即可:cat compile.log - 如果你在持续编译,希望实时看到日志更新:
该命令会持续监听文件的新增内容,非常适合监控场景。tail -f compile.log - 如果日志文件较大,用
cat刷屏很不舒服,此时可以用less分页查看:
在less compile.logless界面中,按/键可以搜索关键词,例如直接搜索“error”,能快速定位错误。 - 还有一种更精准的方式:直接搜索特定错误信息:
该命令会将所有包含“error”的行筛选出来,当日志文件较大时,效率远高于人工翻查。grep "error" compile.log
4. 几点注意事项
有几个细节需要留意。第一,如果编译时没有指定日志文件,那么所有日志默认只在终端显示,终端关闭后就无法找回。因此建议养成习惯:凡是需要排查的编译过程,尽量将日志重定向到文件。第二,如果你使用的是 Maven 或 Gradle 这类构建工具,它们的日志查看方式与直接使用 javac 编译有所不同。例如 Maven,默认编译命令是 mvn compile,日志同样默认输出到终端,但可以通过 -X 参数开启详细日志,这一点与 javac 的 -verbose 有异曲同工之妙。
以上就是在 Ubuntu 下处理 Java 编译日志的几种常用方法。具体选择哪一种,取决于你是想快速查看,还是要进行深入的错误排查。只要掌握了这些基本操作,日常开发中遇到编译问题就不会手忙脚乱了。
