Errori 'Must Override a Superclass Method' dopo aver importato un progetto in Eclipse


1251

Ogni volta che devo reimportare i miei progetti in Eclipse (se ho reinstallato Eclipse o ho cambiato la posizione dei progetti), quasi tutti i miei metodi sostituiti non sono formattati correttamente, causando l'errore:

Il metodo deve sovrascrivere un metodo superclasse

Potrebbe essere degno di nota menzionare che ciò vale per i progetti Android per qualsiasi motivo, i valori degli argomenti del metodo non sono sempre popolati, quindi devo popolarli manualmente da solo. Per esempio:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

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

});

sarà inizialmente popolato in questo modo:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

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

});

La cosa strana è che, se rimuovo il mio codice e faccio in modo che Eclipse ricrea automaticamente il metodo, utilizza gli stessi nomi degli argomenti che avevo già, quindi non so davvero dove si trova il problema, a parte quello che auto-formatta il metodo per me.

Questo diventa abbastanza doloroso dover ricreare manualmente TUTTI i miei metodi scavalcati a mano. Se qualcuno può spiegare perché questo accade o come risolverlo. Sarei molto felice.

Forse è dovuto al modo in cui sto formattando i metodi, che sono all'interno di un argomento di un altro metodo?


1
Controlla questo articolo, spiega l'uso di override. Credo che questa pratica sia molto importante per tutto, non solo per questa situazione in particolare. stackoverflow.com/questions/94361/...
oagostinho

Risposte:


1433

Eclipse è impostato su Java 1.5 per impostazione predefinita e ci sono classi che implementano metodi di interfaccia (che in Java 1.6 possono essere annotati @Override, ma in Java 1.5 può essere applicato solo a metodi che sovrascrivono un metodo superclasse).

Vai alle tue preferenze progetto / IDE e imposta il livello del compilatore Java su 1.6 e assicurati anche di selezionare JRE 1.6 per eseguire il tuo programma da Eclipse.


35
Il mio progetto era impostato su 1.6, quindi ho scattato per le stelle e l'ho impostato su 1.5, ricostruito, quindi di nuovo su 1.6. Miracolosamente, questo ha risolto il mio problema. Grazie per avermi indicato nella giusta direzione!
Michael Krauklis,

6
avendo lo stesso problema ... ho provato il suggerimento fornito in questa risposta ma non ci sono riuscito. :( :(
aditya_gaur,

6
@MichaelKrauklis Ho 1.6 anni e ho questo problema. Ho impostato su 1.5 e l'ho pulito e impostato di nuovo su 1.6 e pulito di nuovo. Ancora non risolto. Qualche idea?
Pacerier,

6
Lo stesso problema qui, nel mio caso, non avevo installato JDK 1.6, solo l'ultimo 1.7, che apparentemente non funziona con Android. L'installazione della 1.6 precedente e quindi seguendo queste istruzioni dovrebbe funzionare :)
NoBugs,

4
Dovrebbe essere menzionato (come nei commenti alle altre risposte) è spesso richiesta una build pulita seguita da un riavvio.
gsingh2011,

308

Con Eclipse Galileo vai su Eclipse -> voce di menu Preferenze, quindi seleziona Java e Compilatore nella finestra di dialogo.

Ora potrebbe ancora mostrare il livello di conformità del compilatore a 1.6, ma si riscontra ancora questo problema. Quindi ora seleziona il link " Configura impostazioni specifiche del progetto ... " e lì vedrai che il progetto è impostato su 1.5, ora cambia questo in 1.6. Dovrai farlo per tutti i progetti interessati.

Questa interfaccia di menu / finestra di dialogo bizantina è tipica del cattivo design dell'interfaccia utente di Eclipse.


78

Nel caso ciò accada a chiunque abbia provato sia il metodo alphazero che Paul e non abbia ancora funzionato.

Per me, l'eclissi in qualche modo 'memorizza' nella cache gli errori di compilazione anche dopo aver fatto un Progetto> Pulisci ...

Ho dovuto deselezionare Progetto> Costruisci automaticamente, quindi fare un Progetto> Pulisci, quindi ricostruire.

Inoltre, in caso di dubbi, prova a riavviare Eclipse . Questo può correggere molti errori imbarazzanti e inspiegabili.


4
Non solo, ma deselezionai "Avvia una build automaticamente" nella finestra di dialogo Pulisci. Solo allora ha funzionato per me.
Wilerson,

3
Ho dovuto riavviare anche eclipse, anche dopo aver eliminato gli errori.
Dave Cameron,

42

Per risolvere questo problema, vai alle proprietà del tuo progetto -> compilatore Java -> Seleziona il livello di conformità del compilatore su 1.6-> Applica.


22

La risposta di Paul ha funzionato parzialmente per me. Ho ancora avuto un errore allora. Quindi, oltre a ciò, ho anche dovuto andare su Proprietà-> Facet del progetto e impostare la versione Java da 1.5 a 1.6.

Forse questo aiuta.


14

Ragazzi nel mio caso nessuna delle soluzioni sopra ha funzionato.

Ho dovuto eliminare i file nell'area di lavoro del progetto:

  • .progetto
  • .classpath

E la cartella:

  • .impostazioni

Poi ho copiato quelli da un progetto simile che stava lavorando prima. Questo è riuscito a riparare il mio progetto rotto.

Naturalmente non utilizzare questo metodo prima di provare le alternative precedenti !.


14

Se nulla di quanto sopra aiuta, assicurati di aver selezionato un " Ambiente di esecuzione " corretto e non un "JRE alternativo".

Si trova sotto:

Progetto -> Percorso di costruzione -> Librerie

Selezionare JRE System Librarye fare clic Edit....

Se è selezionato "Alternate JRE ...", cambiarlo in un "Ambiente di esecuzione" adatto come JavaSE-1.8 (jre1.8.0_60). Non ho idea del perché, ma questo lo risolverà.


2
Ho selezionato un "Ambiente di esecuzione" quindi ho premuto OK e l'errore era sparito. Quindi sono tornato a questa stessa finestra di dialogo e ho selezionato "Area di lavoro predefinita JRE (...)", che era la mia selezione precedente quando ricevevo l'errore da Eclipse, quindi ho premuto OK e l'errore non si è verificato?!? Deve essere un bug dell'interfaccia utente di Eclipse o qualcosa del genere (I am on Eclipse Neon 4.6.2)
mljrg

11

Questa è la seconda volta che incontro questo problema. prima volta secondo la raccomandazione di alphazero ha funzionato. ma nella seconda volta ho impostato 1.6 non funziona proprio come 'CACHE' questo errore dopo aver pulito e ricostruito.

Prova a disattivare "Costruisci automaticamente" come diceva Rollin_s -> errore ancora qui!

Quindi ho rimosso il progetto problema (già impostato su 1.6) da Esplora pacchetti e importato di nuovo -> avvia una ricostruzione e nessun errore questa volta

Spero che questo aiuti qualcuno


10

La correzione deve sovrascrivere un errore del metodo super class non è difficile, devi solo cambiare la versione del sorgente Java in 1.6 perché da Java 1.6 è possibile utilizzare l'annotazione @Override insieme al metodo dell'interfaccia. Per cambiare la versione di origine in 1.6, segui i passaggi seguenti:

  1. Seleziona Progetto, tasto destro, Proprietà
  2. Selezionare Java Compiler e selezionare la casella di controllo "Abilita impostazioni specifiche del progetto"
  3. Ora imposta il livello di conformità del compilatore su 1.6
  4. Applica i cambiamenti

10

Nel mio caso questo problema si è verificato quando ho importato un progetto Maven in Eclipse. Per risolvere questo, ho aggiunto quanto segue in pom.xml:

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

Quindi nel menu contestuale del progetto, vai su "Maven -> Aggiorna progetto ..." e premi OK.

Questo è tutto. Spero che sia di aiuto.


Grazie, suppongo che questo ignori la configurazione del pom pom o qualcosa del genere. (Annuncio il problema al contrario, nessun problema da eclissi, ma il compilatore di Maven mi ha lanciato "deve scavalcare ecc.")
Asoub,

6

Nel mio caso, nessuna delle soluzioni sopra funziona. Devo controllare il mio codice sorgente in un'altra cartella. Da eclipse selezionare File> Cambia aree di lavoro> Altro ... e quindi importare il codice nelle nuove aree di lavoro. funziona dopo.


2

Ciò accade quando il tuo progetto maven utilizza un diverso livello di conformità del compilatore e Eclipse IDE utilizza un diverso livello di conformità del compilatore. Per risolvere questo problema, dobbiamo modificare il livello di Conformità del compilatore del progetto Maven al livello utilizzato dall'IDE.

1) Per vedere il livello di conformità del compilatore Java utilizza nell'IDE Eclipse

*) Finestra -> Preferenze -> Compilatore -> Livello di conformità del compilatore: 1.8 (o 1.7, 1.6 ,, ect)

2) Modificare il livello di conformità del compilatore Java del progetto Maven

*) Vai su "Progetto" -> "Proprietà" -> Seleziona "Java Compiler" -> Modifica il livello di Conformità del compilatore: 1.8 (o 1.7, 1.6 ,, ect)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.