Java 如何确定哪个Xlint选项对应于编译器警告?

Java 如何确定哪个Xlint选项对应于编译器警告?,java,maven,compiler-warnings,lint,java-11,Java,Maven,Compiler Warnings,Lint,Java 11,我的软件版本使用-Xlint-Werror,因此我经常遇到破坏我的版本的编译器警告。每隔一段时间,我就会遇到一个需要抑制的警告,但总是很难确定哪个Xlint选项会抑制我看到的警告 我给你举个具体的例子。我最近遇到: [WARNING] module-info.java:[16,106] module not found: org.bitbucket.cowwoc.requirements.guava 我搜索了JDK 11源代码,发现了在/src/JDK.compiler/share/

我的软件版本使用
-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编译器插件3.8.0、JDK 11.0.1

一种方法,如果您无法访问

javac --help-extra
这将列出您可以启用/禁用的可能警告。例如,从
javac12ea


艾伦·贝特曼为我指出了正确的方向。maven编译器插件似乎隐藏了重要信息。以下是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编译器插件的相应输出:

[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
将抑制此警告


我在这里提交了一份错误报告:

始终存在错误。哪个编译器仍然存在?询问,因为使用javac时,警告将是“[module]module not found:…”和“[module]”,提示-Xlint:-module可能会抑制它。@JonnyHenly是的,修复了。谢谢你。@AlanBateman你说得对。马文错了。我将在下面发布一个更详细的答案。正如问题中提到的,我认为这不够好,因为一些错误(例如问题中提到的错误)可能属于多个选项。在其他情况下(目前还没有想到具体的例子),我记得上面哪一项应该适用并不明显。@Gili我同意,这不是决定在两个选项中选择哪一个的绝对方法。但另一方面,它确实让我们深入了解了如何对警告进行分类。