webentwicklung-frage-antwort-db.com.de

Warum beanstandet Eclipse @Override zu Schnittstellenmethoden?

Ich habe ein vorhandenes Projekt, das @Override für Methoden verwendet, die interface -Methoden anstelle von Superklassenmethoden überschreiben. Ich kann dies nicht im Code ändern, aber ich möchte, dass Eclpse aufhört, sich über die Anmerkung zu beschweren, da ich immer noch mit Maven bauen kann.

Wie gehe ich vor, um diesen Fehler zu deaktivieren?

Hinweis: Aufgrund von Projektanforderungen muss ich Java 1.5 kompilieren.

128
Stefan Kendall

Die Verwendung der Annotation @Override für Methoden, die von einer Schnittstelle deklarierte implementieren, ist nur ab Java 6 gültig. Es ist ein Fehler in Java 5.

Stellen Sie sicher, dass Ihre IDE -Projekte für die Verwendung einer Java 6-JRE eingerichtet sind und die "Quellkompatibilität" auf 1.6 oder höher eingestellt ist. Öffnen Sie den Dialog Fenster> Einstellungen und navigieren Sie zu Java> Compiler. Dort können Sie den "Compiler Compliance Level" auf 1.6 setzen.

Denken Sie daran, dass Eclipse diese globalen Einstellungen für ein bestimmtes Projekt überschreiben kann. Überprüfen Sie diese also auch. 


Update:

Der Fehler unter Java 5 betrifft nicht nur Eclipse. Wenn Sie javac direkt von der Befehlszeile aus verwenden, erhalten Sie denselben Fehler. Es ist kein gültiger Java 5-Quellcode.

Sie können jedoch die Option -target 1.5 für die Variable javac von JDK 6 angeben, die eine Java 5-Versionsklassendatei aus dem Java 6-Quellcode erstellt. 

262
erickson

Projekt-> Eigenschaften-> Java-Compiler->

Aktivieren Sie die projektspezifischen Einstellungen

37
mitko

Überprüfen Sie auch, ob das Projekt eine Facette hat. Die Java-Version kann dort überschrieben werden.

11
gdoumenc

Projektspezifische Einstellungen sind möglicherweise aktiviert. Wählen Sie Ihr Projekt Project > Properties > Java Compiler, uncheck den Enable project specific settings oder ändern Sie Jdk 1.6 und ändern Sie nicht die entsprechende JRE
Wenn es nicht funktioniert, entfernen Sie Ihr Projekt aus Eclipse, löschen Sie .settings folders, .project, .classpath-Dateien. clean and build the project, import it back into Eclipse and then reset your Java compiler. Clean and build your projectund Eclipse. Es hat für mich funktioniert

8
Henry

Sie können die Compilereinstellungen ändern, um Java 6-Syntax zu akzeptieren, aber Java 5-Ausgabe generieren (soweit ich mich erinnere). Und stellen Sie die "Generated Class Files Compatibility" ein wenig niedriger ein, wenn dies von Ihrer Laufzeitumgebung benötigt wird Update : Ich habe Eclipse überprüft, aber es beschwert sich, wenn ich die Quellkompatibilität auf 1,6 und die Klassenkompatibilität auf 1,5 eingestellt habe. Wenn 1.6 nicht zulässig ist, kommentiere ich die anstößigen @Override-Anmerkungen in der Quelle normalerweise manuell aus (was Ihrem Fall nicht hilft).

Update2: Wenn Sie nur manuell bauen, können Sie ein kleines Programm schreiben, das das ursprüngliche Projekt in ein neues kopiert, @Override-Annotationen aus den Java-Quellen entfernt und Sie in Eclipse auf Clean project klicken.

7
akarnokd

Sie können Retro Weaver auch verwenden, um die Java-Version aus Java 6-Klassen zu erstellen.

1
mie

Mit Eclipse können Sie alle Instanzen von "@Override" suchen und ersetzen (entfernen). Fügen Sie dann die Nicht-Interface-Überschreibungen mit "Clean Up" wieder hinzu.

Schritte:

  1. Wählen Sie die Projekte oder Ordner aus, die Ihre Quelldateien enthalten.
  2. Gehen Sie zu "Suchen> Suchen ..." (Strg-H), um den Suchdialog zu öffnen.
  3. Gehen Sie zur Registerkarte "Dateisuche".
  4. Geben Sie "@Override" in "Enthält Text" und "* .Java" in "Dateinamensmuster" ein. Klicken Sie auf "Ersetzen ..." und dann auf "OK", um alle Instanzen von "@Override" zu entfernen.
  5. Gehen Sie zu "Window> Preferences> Java> Code Style> Clean Up" und erstellen Sie ein neues Profil.
  6. Bearbeiten Sie das Profil und deaktivieren Sie alles außer "Fehlender Code> Fehlende Anmerkungen hinzufügen> @Override". Stellen Sie sicher, dass "Implementierungen von Schnittstellenmethoden" nicht markiert ist.
  7. Wählen Sie die Projekte oder Ordner aus, die Ihre Quelldateien enthalten.
  8. Wählen Sie "Source> Clean Up ..." (Alt + Shift + s, dann u) und anschließend "Finish", um die Nicht-Interface-Überschreibungen wieder hinzuzufügen.
1
Peter Tseng

Durch die Konfiguration, dass die IDE -Projekte für die Verwendung einer Java 6-JRE oder höher konfiguriert sind, wird der Eclipse-Fehler manchmal nicht entfernt. Für mich hat ein restart der Eclipe IDE geholfen.

0
IstaLibera

Auch nach Änderung der Compiler-Kompatibilitätseinstellung von .__ auf 1.6 oder 1.7. Windows, dann Preferences, dann Java, dann Compiler und Einstellung der Compiler-Compliance hatte ich immer noch dieses Problem. Die Idee ist, dass wir Sie müssen den Projektordner aufrufen, mit der rechten Maustaste klicken, Java und den Compiler einstellen Einhaltung von 1,6 oder höher. Das hat bei mir funktioniert.

0
Ranjan

Ich verstehe dein Problem, ändere deine jdk von jdk auf größer als 1.5

0