Fehler beim Überschreiben einer Superklassenmethode nach dem Importieren eines Projekts in Eclipse

1251

Jedes Mal, wenn ich meine Projekte erneut in Eclipse importieren muss (wenn ich Eclipse neu installiert oder den Speicherort der Projekte geändert habe), werden fast alle meiner überschriebenen Methoden nicht korrekt formatiert, was den Fehler verursacht:

Die Methode muss eine Methode der Oberklasse überschreiben

Es kann bemerkenswert sein zu erwähnen, dass dies bei Android-Projekten aus irgendeinem Grund der Fall ist. Die Werte der Methodenargumente werden nicht immer ausgefüllt, daher muss ich sie manuell selbst ausfüllen. Zum Beispiel:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //These arguments have their correct names
    public void onCreateContextMenu(ContextMenu menu, View v, 
                                    ContextMenuInfo menuInfo) {                 
    }

});

wird zunächst so ausgefüllt:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //This methods arguments were not automatically provided    
    public void onCreateContextMenu(ContextMenu arg1, View arg2,
                                    ContextMenuInfo arg3) {
    }

});

Das Seltsame ist, wenn ich meinen Code entferne und Eclipse die Methode automatisch neu erstellen lässt, werden dieselben Argumentnamen verwendet, die ich bereits hatte, sodass ich nicht wirklich weiß, wo das Problem liegt, außer dass die Methode automatisch formatiert wird mir.

Dies wird zu einem ziemlichen Schmerz, ALLE meine überschriebenen Methoden manuell von Hand neu erstellen zu müssen. Wenn jemand erklären kann, warum dies passiert oder wie man es behebt. Ich wäre sehr glücklich.

Vielleicht liegt es an der Art und Weise, wie ich die Methoden formatiere, die sich in einem Argument einer anderen Methode befinden?

Tim H.
quelle
1
Bitte überprüfen Sie diesen Punkt, er erklärt die Verwendung von Override. Ich glaube, diese Praxis ist für alles sehr wichtig, nicht nur für diese Situation, insbesondere. stackoverflow.com/questions/94361/…
oagostinho

Antworten:

1433

Eclipse verwendet standardmäßig Java 1.5 und Sie haben Klassen, die Schnittstellenmethoden implementieren (die in Java 1.6 mit Anmerkungen versehen werden @Overridekönnen, in Java 1.5 jedoch nur auf Methoden angewendet werden können, die eine Superklassenmethode überschreiben).

Gehen Sie zu Ihren Projekt- / IDE-Einstellungen und stellen Sie die Java-Compiler-Ebene auf 1.6 ein. Stellen Sie außerdem sicher, dass Sie JRE 1.6 auswählen, um Ihr Programm über Eclipse auszuführen.

Alphazero
quelle
35
Mein Projekt war auf 1.6 eingestellt, also habe ich nach den Sternen geschossen und es auf 1.5 gesetzt, neu aufgebaut und dann wieder auf 1.6. Wie durch ein Wunder löste dies mein Problem. Danke, dass du mich in die richtige Richtung gelenkt hast!
Michael Krauklis
6
mit dem gleichen Problem ... versuchte den Vorschlag in dieser Antwort, aber immer noch nicht erfolgreich. :( :(
aditya_gaur
6
@ MichaelKrauklis Ich bin 1.6 und ich habe dieses Problem. Ich habe auf 1,5 gesetzt und es gereinigt und auf 1,6 zurückgesetzt und es wieder gereinigt. Immer noch nicht gelöst. Irgendwelche Ideen?
Pacerier
6
Gleiches Problem hier, in meinem Fall hatte ich nicht JDK 1.6 installiert, sondern nur die neueste Version 1.7, die anscheinend nicht mit Android funktioniert. Die Installation des älteren 1.6 und das
Befolgen
4
Es sollte erwähnt werden (wie in den Kommentaren zu den anderen Antworten), dass häufig ein sauberer Build gefolgt von einem Neustart erforderlich ist.
Gsingh2011
308

Mit Eclipse Galileo gehen Sie zum Menüpunkt Eclipse -> Einstellungen und wählen im Dialogfeld Java und Compiler aus.

Jetzt wird möglicherweise immer noch die Compiler-Konformitätsstufe bei 1,6 angezeigt, aber Sie sehen dieses Problem immer noch. Wählen Sie nun den Link " Projektspezifische Einstellungen konfigurieren ... " und dort sehen Sie, dass das Projekt auf 1,5 eingestellt ist. Ändern Sie dies nun auf 1,6. Sie müssen dies für alle betroffenen Projekte tun.

Diese byzantinische Menü- / Dialogoberfläche ist typisch für das schlechte UI-Design von Eclipse.

Paul
quelle
78

Für den Fall, dass dies jemand anderem passiert, der sowohl Alphazero als auch Pauls Methode ausprobiert hat und trotzdem nicht funktioniert hat.

Für mich hat Eclipse die Kompilierungsfehler irgendwie 'zwischengespeichert', selbst nachdem ich ein Projekt> Clean ...

Ich musste Projekt> Automatisch erstellen deaktivieren, dann ein Projekt> Bereinigen ausführen und dann erneut erstellen.

Versuchen Sie im Zweifelsfall auch, Eclipse neu zu starten . Dies kann viele unangenehme, unerklärliche Fehler beheben.

Rollin_s
quelle
4
Ich habe nicht nur das getan, sondern im Dialogfeld "Bereinigen" das Kontrollkästchen "Build automatisch starten" deaktiviert. Nur dann hat es bei mir funktioniert.
Wilerson
3
Ich musste Eclipse auch nach dem Löschen der Fehler neu starten.
Dave Cameron
42

Um dieses Problem zu beheben, gehen Sie zu Ihren Projekteigenschaften -> Java-Compiler -> Wählen Sie die Compiler-Konformitätsstufe auf 1.6-> Übernehmen.

false9striker
quelle
22

Die Antwort von Paul hat teilweise für mich funktioniert. Ich hatte damals noch einen Fehler. Außerdem musste ich zusätzlich zu Eigenschaften-> Projektfacetten gehen und dort die Java-Version von 1.5 auf 1.6 einstellen.

Vielleicht hilft das.

ulrich
quelle
14

Leute, in meinem Fall hat keine der oben genannten Lösungen funktioniert.

Ich musste die Dateien im Projektarbeitsbereich löschen:

  • .Projekt
  • .classpath

Und der Ordner:

  • .die Einstellungen

Dann habe ich diejenigen aus einem ähnlichen Projekt kopiert, das zuvor funktioniert hat. Dies hat es geschafft, mein kaputtes Projekt zu reparieren.

Verwenden Sie diese Methode natürlich nicht, bevor Sie die vorherigen Alternativen ausprobiert haben!.

will824
quelle
14

Wenn nichts davon hilft, stellen Sie sicher, dass Sie eine geeignete " Ausführungsumgebung " ausgewählt haben und keine "Alternative JRE".

Zu finden unter:

Projekt -> Pfad erstellen -> Bibliotheken

Wählen Sie die aus JRE System Libraryund klicken Sie auf Edit....

Wenn "Alternative JRE ..." ausgewählt ist, ändern Sie es in eine passende "Ausführungsumgebung" wie JavaSE-1.8 (jre1.8.0_60). Keine Ahnung warum, aber das wird es lösen.

phil294
quelle
2
Ich habe eine "Ausführungsumgebung" ausgewählt, dann OK gedrückt und der Fehler war verschwunden. Dann kehrte ich zu demselben Dialogfeld zurück und wählte "Arbeitsbereich-Standard-JRE (...)". Dies war meine vorherige Auswahl, als ich den Fehler von Eclipse erhielt. Dann drückte ich OK, und der Fehler trat nicht auf?!? Dies muss ein Eclipse UI-Fehler oder ähnliches sein (ich bin auf Eclipse Neon 4.6.2)
mljrg
11

Dies ist meine zweite Begegnung mit diesem Problem. Zum ersten Mal nach der Empfehlung des Alphazero hat es funktioniert. Aber beim zweiten Mal, als ich auf 1.6 gesetzt habe, funktioniert es nicht so wie 'CACHE' diesen Fehler nach dem Reinigen und Wiederherstellen.

Versuchen Sie, 'Automatisch erstellen' auszuschalten, wie Rollin_s sagte -> Fehler immer noch hier!

Also habe ich das Problemprojekt (bereits auf 1.6 eingestellt) aus dem Paket-Explorer entfernt und erneut importiert -> es startet eine Neuerstellung und diesmal ohne Fehler

Hoffe das hilft jemandem

ob.yann
quelle
10

Das Beheben eines Superklassen-Methodenfehlers muss nicht schwierig sein. Sie müssen lediglich die Java-Quellversion auf 1.6 ändern, da ab Java 1.6 die @ Override-Annotation zusammen mit der Schnittstellenmethode verwendet werden kann. Führen Sie die folgenden Schritte aus, um die Quellversion auf 1.6 zu ändern:

  1. Wählen Sie Projekt, Rechtsklick, Eigenschaften
  2. Wählen Sie Java Compiler und aktivieren Sie das Kontrollkästchen "Projektspezifische Einstellungen aktivieren".
  3. Stellen Sie nun die Compiler-Konformitätsstufe auf 1,6 ein
  4. Änderungen übernehmen
Sunil
quelle
10

In meinem Fall trat dieses Problem auf, als ich ein Maven-Projekt in Eclipse importierte. Um dies zu lösen, habe ich Folgendes hinzugefügt pom.xml:

<properties>
   ...
   <maven.compiler.source>1.8</maven.compiler.source>
   <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Gehen Sie dann im Kontextmenü des Projekts zu "Maven -> Projekt aktualisieren ..." und drücken Sie OK.

Das ist es. Hoffe das hilft.

mljrg
quelle
Danke, ich denke, dies überschreibt die übergeordnete POM-Konfiguration oder so. (Ich füge das Problem umgekehrt hinzu, kein Problem durch Eclipse, aber Mavens Compiler warf mich "muss überschreiben usw.")
Asoub
6

In meinem Fall funktioniert keine der oben genannten Lösungen. Ich muss meinen Quellcode in einen anderen Ordner auschecken. Wählen Sie in Eclipse Datei> Arbeitsbereiche wechseln> Andere ... und importieren Sie dann Code in die neuen Arbeitsbereiche. es funktioniert danach.

Hắc Huyền Minh
quelle
2

Dies geschieht, wenn Ihr Maven-Projekt unterschiedliche Compiler-Konformitätsstufen verwendet und Eclipse IDE unterschiedliche Compiler-Konformitätsstufen verwendet. Um dies zu beheben, müssen wir die Compiler-Konformitätsstufe des Maven-Projekts auf die von der IDE verwendete Stufe ändern.

1) Anzeigen der Java Compiler-Konformitätsstufe, die in der Eclipse-IDE verwendet wird

*) Fenster -> Einstellungen -> Compiler -> Compiler-Konformitätsstufe: 1,8 (oder 1,7, 1,6 ,, ect)

2) Ändern der Java Compiler-Konformitätsstufe des Maven-Projekts

*) Gehen Sie zu "Projekt" -> "Eigenschaften" -> Wählen Sie "Java Compiler" -> Ändern Sie die Compiler-Konformitätsstufe: 1.8 (oder 1.7, 1.6 ,, ect)

HashanR
quelle