我的软件版本使用-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
答案 0 :(得分:2)
答案 1 :(得分:2)
艾伦·贝特曼(Alan Bateman)向我指出了正确的方向。看来,maven-compiler-plugin抑制了重要信息。这是javac 11.0.1的输出:
C:\Users\Gili\Documents\requirements\java\src\main\java\module-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