57

当我编译时,javac 输出:

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

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

4

9 回答 9

39

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

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

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

于 2009-10-12T13:27:24.077 回答
29

两种可能的方式:

  1. 不要使用已弃用的 API
  2. 采用@SuppressWarnings("deprecation")
于 2009-10-12T13:22:46.037 回答
27

对于其他谷歌搜索这个问题并像我一样偶然发现这个线程的人......

尝试:-Xlint:-deprecation

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

于 2011-06-03T17:18:14.613 回答
10

在 Java 6 中,@Depreated 注释和编译器标志都不会在这里为您提供帮助。唯一对我有用的解决方案是在不推荐使用的方法上添加带有@deprecated(小型大写字母)标记的javadoc注释:

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

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

(我没有导入已弃用的 Validator 类以避免在导入语句上出现警告。)

于 2012-02-23T08:45:08.240 回答
6

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

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

(使用 Gradle 2 和 Java 8 测试)

于 2015-12-22T13:27:23.750 回答
1

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

于 2009-10-12T13:25:17.013 回答
0

使用 nowarn 属性见下文

例如

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

默认情况下 nowarn 属性是关闭的

于 2014-12-16T16:56:18.867 回答
-1

@SuppressWarnings("deprecation") 不适合我,而是我用过

@SuppressWarnings("unchecked")
于 2017-04-29T09:38:10.453 回答
-3

如果您在命令行中编译,您可以使用 过滤消息grep,只需过滤掉包含不需要的内容的消息,例如grep -v deprecated. 您可以使用|将输出发送到 grep,

your compile command | grep -v deprecated
于 2018-05-10T17:10:57.587 回答