it-roy-ru.com

Как я могу подавить предупреждения javac об устаревших API?

Когда я компилирую, выводит javac:

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

Я хочу подавить это предупреждение. Попытка -Xlint: ни один, похоже, не поможет.

49
IttayD

Из того, что я могу сказать в документации, вы не можете сделать это в командной строке.

В соответствии с javac документацией , -Xlint: none отключает только предупреждения, "не предписанные спецификацией языка Java". Похоже, что предупреждение об использовании устаревших API управляется спецификацией языка.

Лучшим вариантом будет исправить использование устаревших API. Однако можно добавить аннотацию @SuppressWarnings("deprecation") к классам или методам, использующим устаревшие API.

32
Thomas Owens

Два возможных способа:

  1. не используйте устаревший API
  2. Используйте @SuppressWarnings("deprecation")
27
Joachim Sauer

Для других, которые Google искали эту проблему и наткнулись на эту тему, как я сделал ...

Попробуйте: - Xlint: -deprecation

Похоже, что работает на JDK 6 ... не уверен в других.

21
Jeff

В Java 6 вам не помогут ни аннотация @Depreated, ни флаг компилятора. Единственное решение, которое мне помогло, - это добавить javadoc комментарий с тегом @deprecated (small caps) на устаревший метод:

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

(Пример взят из класса, производного от JAXBContext.)

(Я не импортировал устаревший класс Validator, чтобы избежать предупреждения в операторе импорта.)

10
Wolfgang

При использовании gradle вы можете легко настроить его:

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

(протестировано с Gradle 2 и Java 8)

5
Arne Burmeister

Если это ядро ​​Java API, почти наверняка есть замена, которая будет делать то, что вы хотите. Запустите javac с этим дополнительным параметром, а затем посмотрите на API для устаревшего метода и при необходимости замените.

1
Matt Poush

@SuppressWarnings("deprecation") не работает для меня, вместо этого я использовал 

@SuppressWarnings("unchecked")
1
Kaushal28

используйте атрибут nowarn, см. ниже

например.

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

по умолчанию атрибут nowarn отключен

0
coolcoder