53 votes

Comment puis-je supprimer les avertissements de javac concernant les api dépréciées ?

Quand je compile, javac sort :

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

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

4 votes

Pourquoi l'éviter ? Vous devez remplacer les appels aux API dépréciées par des solutions qui n'utilisent pas d'API dépréciée.

26 votes

Parce que je compile des modules d'autres développeurs avec de nombreuses lignes de code. essayer de les convaincre tous de revoir le code et de le corriger est futile.

1 votes

C'est exactement mon problème aussi. En attendant d'avoir le temps de corriger les avertissements, je fais un javac ... 2>&1 | grep -v "Note :"

36voto

Thomas Owens Points 45042

D'après ce que je peux voir dans la documentation, on ne peut pas le faire en ligne de commande.

Según la javac documentation L'option -Xlint:none ne désactive que les avertissements "non exigés par la spécification du langage Java". Il semble que le fait de vous avertir de l'utilisation d'API dépréciées soit géré par la spécification du langage.

Votre meilleure option serait de corriger l'utilisation des API dépréciées. Cependant, une option serait d'ajouter l'option @SuppressWarnings("deprecation") aux classes ou méthodes qui utilisent les API dépréciées.

2 votes

Pour Jdk 5, j'utilise -Xlint:all . Cela semble supprimer tous les avertissements de dépréciation, non vérifiés, etc.

7 votes

Que faire s'il y a des importations pour des classes dépréciées ? Existe-t-il une option permettant de masquer ces avertissements ?

8 votes

Il existe au moins une raison légitime de supprimer les avertissements de dépréciation, c'est lorsque votre framework fournit une méthode qui a été dépréciée mais que le framework lui-même invoque à un moment donné parce que la méthode dépréciée doit continuer à être supportée jusqu'à sa suppression.

29voto

Joachim Sauer Points 133411

Deux voies possibles :

  1. n'utilisez pas d'API obsolète
  2. Utilisez @SuppressWarnings("deprecation")

11 votes

1. n'utilisez pas d'API dépréciée ; 2. réfléchissez à deux fois avant d'utiliser une API dépréciée ; 3. utilisez @SuppressWarnings("deprecation"). :) +1

30 votes

J'ai demandé comment désactiver l'avertissement. Il est évident que je peux éviter d'utiliser des API dépréciées, mais comme la base de code implique deux équipes, je ne peux pas les persuader toutes de le faire.

0 votes

Comment ignorer les avertissements de compilation à la ligne de commande avec javac ?

26voto

Jeff Points 119

Pour ceux qui ont cherché ce problème sur Google et qui sont tombés sur ce fil comme moi...

Essayez : -Xlint:-dépréciation

Il semble fonctionner sur le JDK 6... pas sûr pour les autres.

2 votes

Gardez à l'esprit que cela désactive tous les avertissements de dépréciation et pas seulement sur les méthodes sélectionnées.

0 votes

Au moins le javac d'icedtea8 accepte -Xlint:-deprecation seulement pour l'ignorer. (c'est-à-dire que les avertissements de dépréciation sont toujours produits).

3 votes

Et vous pouvez utiliser plusieurs réglages de peluche ensemble. Mon installation a -Xlint:all -Xlint:-deprecation de sorte que tout ce qui n'est pas une dépréciation génère un avertissement.

10voto

Wolfgang Points 1180

Avec Java 6, ni l'annotation @Depreated, ni un drapeau du compilateur ne vous aideront ici. La seule solution qui a fonctionné pour moi a été de mettre une annotation Commentaire du javadoc avec le @deprecated (petites capitales) sur la méthode dépréciée :

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

(L'exemple provient d'une classe qui dérive de JAXBContext).

(Je n'ai pas importé la classe Validator dépréciée pour éviter un avertissement sur l'instruction d'importation).

1 votes

Merci Wolfgang. L'annotation @SuppressWarnings("deprecation") ne fonctionnait pas complètement, certains des avertissements étaient toujours affichés. L'ajout du commentaire @deprecated les a tous supprimés.

1voto

Matt Poush Points 1281

S'il s'agit d'une API Java de base, il existe presque certainement une solution de remplacement qui fera ce que vous voulez. Exécutez le javac avec ce paramètre supplémentaire, puis regardez l'API pour la méthode dépréciée et remplacez-la comme il se doit.

0 votes

Exécuter javac avec quel paramètre supplémentaire ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X