如何抑制有关弃用api的javac警告?

时间:2009-10-12 13:20:56

标签: java compiler-warnings javac

编译时,javac输出:

Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.`

我希望压制这个警告。尝试-Xlint:none似乎没有帮助。

8 个答案:

答案 0 :(得分:32)

从文档中我可以看出,你不能在命令行上做到这一点。

根据javac documentation,-Xlint:none仅禁用“Java语言规范未强制要求”的警告。似乎警告您使用已弃用的API由语言规范管理。

您最好的选择是修复已弃用API的使用。但是,一个选项是将@SuppressWarnings("deprecation")注释添加到使用不推荐使用的API的类或方法中。

答案 1 :(得分:27)

两种可能的方式:

  1. 不要使用已弃用的API
  2. 使用@SuppressWarnings("deprecation")

答案 2 :(得分:22)

对于谷歌搜索此问题的其他人,偶然发现了这个问题...

尝试: -Xlint:-deprecation

它似乎适用于JDK 6 ......不确定其他人。

答案 3 :(得分:10)

使用Java 6,@ Depreated注释和comiler标志都不会对您有所帮助。对我有用的唯一解决方案是在弃用的方法上使用 @deprecated (小型大写)标记添加 javadoc评论

/**
  * @deprecated overriding deprecated method
  */
@Override
public javax.xml.bind.Validator createValidator() throws JAXBException {...}

(该示例来自一个派生自JAXBContext的类。)

(我没有导入已弃用的Validator类以避免对import语句发出警告。)

答案 4 :(得分:5)

使用 gradle 时,您可以轻松配置它:

tasks.withType(JavaCompile) {
    options.deprecation = false
}

(使用Gradle 2和Java 8测试)

答案 5 :(得分:1)

如果它是一个核心Java API,几乎可以肯定有一个替代品可以做你想要的。使用该额外参数运行javac,然后查看已弃用方法的API并根据需要进行替换。

答案 6 :(得分:1)

@SuppressWarnings("deprecation")不适用于我,而是使用了

@SuppressWarnings("unchecked")

答案 7 :(得分:0)

使用nowarn属性见下文

e.g。

<javac srcdir="src" 
  destdir="build/classes" source="1.6" 
  target="1.6" debug="true" encoding="Cp1252"
  nowarn="on">

默认情况下,nowarn属性已关闭