web-dev-qa-db-fra.com

Comment puis-je supprimer les avertissements javac concernant les API obsolètes?

Lorsque je compile, javac génère:

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

Je souhaite supprimer cet avertissement. Essayer -Xlint: aucun ne semble aider.

49
IttayD

D'après ce que je peux dire dans la documentation, vous ne pouvez pas le faire en ligne de commande.

Selon la documentation javac , -Xlint: none ne fait que désactiver les avertissements "non requis par la spécification du langage Java". Il semble que vous avertir de l'utilisation d'API obsolètes est géré par la spécification de langue.

Votre meilleure option serait de corriger l'utilisation d'API obsolètes. Cependant, une option consisterait à ajouter l'annotation @SuppressWarnings("deprecation") aux classes ou méthodes utilisant les API obsolètes.

32
Thomas Owens

Deux manières possibles:

  1. n'utilisez pas une API obsolète
  2. Utilisez @SuppressWarnings("deprecation")
27
Joachim Sauer

Pour d'autres, Google cherchant ce problème et tombant sur ce fil, comme moi.

Essayez: - Xlint: -deprecation

Cela semble fonctionner sur JDK 6 ... pas sûr des autres.

21
Jeff

Avec Java 6, ni l'annotation @Depreated, ni un indicateur de comiler ne vous aideront ici. La seule solution qui a fonctionné pour moi a été de mettre un commentaire javadoc avec la balise @deprecated (petites capitales) sur la méthode obsolète:

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

(L'exemple provient d'une classe dérivée de JAXBContext.)

(Je n'ai pas importé la classe obsolète Validator pour éviter un avertissement sur l'instruction d'importation.)

10
Wolfgang

Lorsque vous utilisez gradle vous pouvez le configurer facilement:

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

(testé avec Gradle 2 et Java 8)

5
Arne Burmeister

S'il s'agit d'une API Java principale, il y a presque certainement un remplaçant qui fera ce que vous voulez. Exécutez le fichier javac avec ce paramètre supplémentaire, puis examinez l'API pour la méthode obsolète et remplacez-la le cas échéant.

1
Matt Poush

@SuppressWarnings("deprecation") ne fonctionne pas pour moi, j'ai plutôt utilisé 

@SuppressWarnings("unchecked")
1
Kaushal28

utiliser l'attribut nowarn voir ci-dessous

par exemple.

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

par défaut, l'attribut nowarn est désactivé

0
coolcoder