如何在不修改源的情况下禁用“warning:[unchecked] unchecked conversion”

时间:2014-01-28 15:02:06

标签: java ant

我在库中获得了“警告:[未经检查]未经检查的转换”消息,其源代码我将与我的代码一起编译。由于我不想修改库源,有没有办法在Ant的javac任务中禁用该特定警告?

3 个答案:

答案 0 :(得分:3)

无法禁用unchecked Xlint选项 ,至少不使用-Xlink:-unchecked javac标记。

这似乎是在编译器的com.sun.tools.javac.comp.Check类中强制执行的,请参阅jdk8-b40标记this version的第127行(摘录如下)。

    boolean verboseDeprecated = lint.isEnabled(LintCategory.DEPRECATION);
    boolean verboseUnchecked = lint.isEnabled(LintCategory.UNCHECKED);
    boolean verboseSunApi = lint.isEnabled(LintCategory.SUNAPI);
    boolean enforceMandatoryWarnings = source.enforceMandatoryWarnings();

    deprecationHandler = new MandatoryWarningHandler(log, verboseDeprecated,
            enforceMandatoryWarnings, "deprecated", LintCategory.DEPRECATION);
    uncheckedHandler = new MandatoryWarningHandler(log, verboseUnchecked,
            enforceMandatoryWarnings, "unchecked", LintCategory.UNCHECKED);
    sunApiHandler = new MandatoryWarningHandler(log, verboseSunApi,
            enforceMandatoryWarnings, "sunapi", null);

答案 1 :(得分:2)

您应该尝试使用javac选项-Xlint:-name,其中 name 是要禁用的警告的名称。可能的名称列表为here。所以我想在你的情况下,名称将是“未选中”。

在Ant脚本中,这看起来像:

<javac ...>
  <compilerarg value="-Xlint:-unchecked"/>
  ...
</javac>

答案 2 :(得分:0)

试试这个!

<javac classpathref="project.class.path">
   nowarn="true"
   deprecation="false"
   ....
</javac>