Как я могу подавить предупреждения javac об устаревших API? - PullRequest
50 голосов
/ 12 октября 2009

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

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

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

Ответы [ 9 ]

32 голосов
/ 12 октября 2009

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

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

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

27 голосов
/ 12 октября 2009

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

  1. не использовать устаревший API
  2. Использование @SuppressWarnings("deprecation")
22 голосов
/ 03 июня 2011

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

Try: -Xlint: -deprecation

Кажется, он работает на JDK 6 ... не уверен в других.

10 голосов
/ 23 февраля 2012

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

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

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

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

5 голосов
/ 22 декабря 2015

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

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

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

1 голос
/ 29 апреля 2017

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

@SuppressWarnings("unchecked")
1 голос
/ 12 октября 2009

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

0 голосов
/ 10 мая 2018

Если вы компилируете в командной строке, вы можете фильтровать сообщения с помощью grep, просто отфильтровывая сообщения с нежелательным содержимым, как, например, grep -v deprecated. Вы можете использовать | для отправки вывода в grep,

your compile command | grep -v deprecated
0 голосов
/ 16 декабря 2014

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

, например

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...