web-dev-qa-db-de.com

Wie kann ich Javac-Warnungen zu veraltetem API unterdrücken?

Beim Kompilieren von Javac-Ausgaben:

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

Ich möchte diese Warnung unterdrücken. Versuch -Xlint: Keiner scheint zu helfen.

49
IttayD

Nach dem, was ich in den Dokumenten feststellen kann, können Sie dies nicht in der Befehlszeile tun.

Entsprechend der javac-Dokumentation , -Xlint: none deaktiviert nur Warnungen, die nicht in der Java-Sprachspezifikation enthalten sind. Es scheint, dass die Warnung vor der Verwendung veralteter APIs von der Sprachspezifikation verwaltet wird.

Die beste Option wäre, die Verwendung veralteter APIs zu korrigieren. Eine Option wäre jedoch, die @SuppressWarnings("deprecation")-Anmerkung zu den Klassen oder Methoden hinzuzufügen, die die veralteten APIs verwenden.

32
Thomas Owens

Zwei mögliche Wege:

  1. verwenden Sie keine veraltete API
  2. Verwenden Sie @SuppressWarnings("deprecation")
27
Joachim Sauer

Für andere, die Google dieses Problem gesucht haben und wie ich auf diesen Thread gestoßen sind ...

Versuchen Sie: - Xlint: -deprecation

Es scheint an JDK 6 zu arbeiten ... bei anderen nicht sicher.

21
Jeff

Bei Java 6 helfen Ihnen hier weder die Annotation @Depreated noch ein Comiler-Flag. Die einzige Lösung, die für mich funktionierte, war, einen javadoc-Kommentar mit dem @deprecated - Tag (Small Caps) auf die veraltete Methode zu setzen:

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

(Das Beispiel stammt aus einer Klasse, die von JAXBContext abgeleitet ist.)

(Ich habe die veraltete Validator-Klasse nicht importiert, um eine Warnung in der Importanweisung zu vermeiden.)

10
Wolfgang

Wenn Sie gradle verwenden, können Sie es einfach konfigurieren:

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

(getestet mit Gradle 2 und Java 8)

5
Arne Burmeister

Wenn es sich um eine zentrale Java-API handelt, gibt es fast sicher einen Ersatz, der das tut, was Sie wollen. Führen Sie den Javac mit diesem zusätzlichen Parameter aus, und suchen Sie dann die API für die veraltete Methode, und ersetzen Sie sie entsprechend.

1
Matt Poush

@SuppressWarnings("deprecation") funktioniert nicht für mich, stattdessen habe ich verwendet 

@SuppressWarnings("unchecked")
1
Kaushal28

verwenden Sie das Nowarn-Attribut (siehe unten)

z.B.

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

standardmäßig ist das Attribut nowarn deaktiviert

0
coolcoder