如何确定哪个Xlint选项对应于编译器警告?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何确定哪个Xlint选项对应于编译器警告?相关的知识,希望对你有一定的参考价值。
我的软件构建使用-Xlint -Werror
所以我经常运行编译器警告,打破我的构建。每隔一段时间我都会遇到一个我需要压制的警告,但总是很难弄清楚哪个Xlint
选项会抑制我所看到的警告。
我会给你一个具体的例子。我最近遇到过:
[WARNING] module-info.java:[16,106] module not found:
org.bitbucket.cowwoc.requirements.guava
我搜索了JDK 11源代码,发现在/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties
声明的这条警告消息为:
# 0: symbol
compiler.err.module.not.found=
module not found: {0}
现在,事实证明这是由-Xlint:-module
抑制的,但是文档中并不明显。 -Xlint:-export
也有意义。我也曾经遇到过根本无法抑制的警告(这些警告随后被修复)。
有没有确定性的方法来确定哪个Xlint
选项对应于每个警告信息,而不是诉诸试验和错误? JDK源代码中是否存在某种映射文件?
更新:我使用的是Maven 3.6.0,maven-compiler-plugin 3.8.0,JDK 11.0.1
一种方法,如果以某种方式你无法访问online documentation可能正在使用该命令
javac --help-extra
这将列出您可以启用/禁用的可能警告。例如来自javac 12-ea
:
艾伦贝特曼指出我正确的方向。似乎maven-compiler-plugin压制重要信息。这是javac 11.0.1的输出:
C:UsersGiliDocuments
equirementsjavasrcmainjavamodule-info.java:16: warning: [module] module not found: org.bitbucket.cowwoc.requirements.guava
exports org.bitbucket.cowwoc.requirements.java.internal.impl to org.bitbucket.cowwoc.requirements.guava;
这是maven-compiler-plugin的相应输出:
[WARNING] /C:/Users/Gili/Documents/requirements/java/src/main/java/module-info.java:[16,106] module not found: org.bitbucket.cowwoc.requirements.guava
javac
在警告开始时提到[module]
,表明-Xlint:-module
将禁止这个警告。
我在这里提交了一个错误报告:https://issues.apache.org/jira/browse/MCOMPILER-367
以上是关于如何确定哪个Xlint选项对应于编译器警告?的主要内容,如果未能解决你的问题,请参考以下文章
java中遇到-xlint:unchecked,如何使用?求高手指教!
如何在 Maven 项目中使用 -Xlint:unchecked 进行编译?