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

Itt*_*ayD 50 java javac compiler-warnings

当我编译时,javac输出:

Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.`
Run Code Online (Sandbox Code Playgroud)

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

Tho*_*ens 33

从我在文档中可以看出,您不能在命令行上执行此操作.

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

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

  • 至少有一个合理的理由来抑制弃用警告,那就是当你的框架提供了一个已被弃用但框架本身在某个时候调用的方法时,因为在被删除之前必须继续支持不推荐使用的方法. (7认同)
  • 如果有已弃用类的导入怎么办?隐藏此类警告的任何选项? (6认同)
  • 对于Jdk 5,我使用-Xlint:all。这似乎抑制了所有关于弃用,未经检查等的警告。 (2认同)

Joa*_*uer 27

两种可能的方式:

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

  • 我问如何关闭警告.显然我可以避免使用已弃用的API,但由于代码库涉及两个团队,我无法说服所有人这样做. (27认同)
  • 1.不要使用已弃用的API; 2.在使用已弃用的API之前要三思而后行; 3.使用@SuppressWarnings("弃用").:) +1 (11认同)
  • 我有一个梦想,有一天我可以无视警告,而不会质疑我的动机。 (5认同)

小智 23

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

尝试:-Xlint:-deprecation

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

  • 请记住,这不仅会禁用所选方法的所有弃用警告。 (2认同)
  • 并且您可以一起使用多个皮棉设置。我的设置具有`-Xlint:all -Xlint:-deprecation`,因此除弃用之外的所有内容都会生成警告。 (2认同)
  • 我尝试了这个(使用 JDK7,Gradle 4.8.1),但仍然出现烦人的“注意:...”。 (2认同)
  • 这也适用于 java 11.0.6,但使用 "-Xlint:-deprecation" 和 "@SuppressWarnings("deprecation")" 之间存在差异。使用 Xlint 方法,警告会被抑制,但您仍然会收到“注意 --- 使用或覆盖已弃用的 API”。这至少在 Eclipse/Ant 中也很烦人,因为它在控制台输出中以红色强调。 (2认同)

Wol*_*ang 10

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

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

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

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

  • 谢谢沃尔夫冈。@SuppressWarnings("deprecation") 注释没有完全工作,一些警告仍在输出。添加@deprecated 评论将它们全部抑制。 (2认同)

Arn*_*ter 5

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

tasks.withType(JavaCompile) {
    options.deprecation = false
}
Run Code Online (Sandbox Code Playgroud)

(使用Gradle 2和Java 8测试)