Erreurs «doit remplacer une méthode de superclasse» après l'importation d'un projet dans Eclipse

1251

Chaque fois que je dois réimporter mes projets dans Eclipse (si j'ai réinstallé Eclipse ou changé l'emplacement des projets), presque toutes mes méthodes remplacées ne sont pas formatées correctement, ce qui provoque l'erreur:

La méthode doit remplacer une méthode de superclasse

Il peut être intéressant de mentionner que cela concerne les projets Android pour une raison quelconque, les valeurs des arguments de méthode ne sont pas toujours renseignées, je dois donc les remplir manuellement moi-même. Par exemple:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

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

});

sera initialement rempli comme ceci:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

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

});

La chose étrange est que si je supprime mon code et que Eclipse recrée automatiquement la méthode, il utilise les mêmes noms d'argument que j'avais déjà, donc je ne sais pas vraiment où est le problème, sinon il formate automatiquement la méthode pour moi.

Cela devient assez pénible d'avoir à recréer manuellement TOUTES mes méthodes remplacées à la main. Si quelqu'un peut expliquer pourquoi cela se produit ou comment y remédier. Je serais très content.

Peut-être est-ce dû à la façon dont je mets en forme les méthodes, qui sont à l'intérieur d'un argument d'une autre méthode?

Tim H
la source
1
Veuillez vérifier cet élément, il explique l'utilisation du remplacement. Je crois que cette pratique est très importante pour tout, pas seulement pour cette situation en particulier. stackoverflow.com/questions/94361/…
oagostinho

Réponses:

1433

Eclipse utilise par défaut Java 1.5 et vous avez des classes implémentant des méthodes d'interface (qui en Java 1.6 peuvent être annotées @Override, mais en Java 1.5 ne peuvent être appliquées qu'aux méthodes remplaçant une méthode de superclasse).

Accédez à vos préférences de projet / IDE et définissez le niveau du compilateur Java sur 1.6 et assurez-vous également de sélectionner JRE 1.6 pour exécuter votre programme à partir d'Eclipse.

alphazero
la source
35
Mon projet était réglé sur 1,6, j'ai donc tourné pour les étoiles et je l'ai mis à 1,5, reconstruit, puis à 1,6. Miraculeusement, cela a résolu mon problème. Merci de m'avoir pointé dans la bonne direction!
Michael Krauklis
6
ayant le même problème ... essayé la suggestion donnée dans cette réponse mais toujours pas réussi. :( :(
aditya_gaur
6
@MichaelKrauklis j'ai 1,6 et j'ai ce problème. J'ai mis à 1,5 et nettoyé et remis à 1,6 et nettoyé à nouveau. Pas encore résolu. Des idées?
Pacerier
6
Même problème ici, dans mon cas, je n'avais pas installé JDK 1.6, seulement le dernier 1.7, qui ne fonctionne apparemment pas avec Android. L'installation de l'ancienne version 1.6, puis en suivant ces instructions, devrait fonctionner :)
NoBugs
4
Il convient de mentionner (comme dans les commentaires des autres réponses) une construction propre suivie d'un redémarrage est souvent requise.
gsingh2011
308

Avec Eclipse Galileo, accédez à l'élément de menu Eclipse -> Préférences, puis sélectionnez Java et compilateur dans la boîte de dialogue.

Maintenant, il peut toujours afficher le niveau de conformité du compilateur à 1.6, mais vous voyez toujours ce problème. Alors maintenant, sélectionnez le lien " Configurer les paramètres spécifiques au projet ... " et là-bas, vous verrez que le projet est défini sur 1.5, maintenant changez-le en 1.6. Vous devrez effectuer cette opération pour tous les projets concernés.

Cette interface de menu / boîte de dialogue byzantine est typique de la mauvaise conception de l'interface utilisateur d'Eclipse.

Paul
la source
78

Au cas où cela arriverait à quelqu'un d'autre qui a essayé à la fois alphazero et la méthode de Paul et qui n'a toujours pas fonctionné.

Pour moi, l'éclipse a en quelque sorte «mis en cache» les erreurs de compilation même après avoir fait un projet> nettoyer ...

J'ai dû décocher Projet> Générer automatiquement, puis faire un projet> Nettoyer, puis recréer.

En cas de doute, essayez de redémarrer Eclipse . Cela peut corriger de nombreuses erreurs gênantes et inexplicables.

Rollin_s
la source
4
Je n'ai pas seulement cela, mais décoché "Démarrer une génération automatiquement" dans la boîte de dialogue Nettoyer. Alors seulement, cela a fonctionné pour moi.
Wilerson
3
J'ai également dû redémarrer Eclipse, même après avoir supprimé les erreurs.
Dave Cameron
42

Pour résoudre ce problème, accédez aux propriétés de votre projet -> Compilateur Java -> Sélectionnez le niveau de conformité du compilateur à 1.6-> Appliquer.

false9striker
la source
22

La réponse de Paul a fonctionné en partie pour moi. J'avais encore une erreur alors. Donc, en plus de cela, j'ai également dû aller dans Propriétés-> Facettes du projet et y définir la version Java de 1.5 à 1.6.

Peut-être que cela aide.

ulrich
la source
14

Les gars dans mon cas, aucune des solutions ci-dessus n'a fonctionné.

J'ai dû supprimer les fichiers dans l'espace de travail Project:

  • .projet
  • .classpath

Et le dossier:

  • .réglages

Ensuite, j'ai copié ceux d'un projet similaire qui fonctionnait auparavant. Cela a réussi à réparer mon projet cassé.

Bien sûr, n'utilisez pas cette méthode avant d'essayer les alternatives précédentes!.

will824
la source
14

Si rien de ce qui précède ne vous aide, assurez-vous que vous avez sélectionné un « environnement d'exécution » approprié , et non un «JRE alternatif».

À trouver sous:

Projet -> Chemin de génération -> Bibliothèques

Sélectionnez JRE System Libraryet cliquez sur Edit....

Si "Alternate JRE ..." est sélectionné, remplacez-le par un "Execution Environment" approprié JavaSE-1.8 (jre1.8.0_60). Je ne sais pas pourquoi, mais cela le résoudra.

phil294
la source
2
J'ai sélectionné un "environnement d'exécution", puis j'ai appuyé sur OK et l'erreur a disparu. Ensuite, je suis revenu à cette même boîte de dialogue et j'ai sélectionné "Workspace par défaut JRE (...)", qui était ma sélection précédente lorsque je recevais l'erreur d'Eclipse, puis j'ai appuyé sur OK, et l'erreur ne s'est pas produite?!? Ce doit être un bug d'interface utilisateur Eclipse ou quelque chose comme ça (je suis sur Eclipse Neon 4.6.2)
mljrg
11

C'est la deuxième fois que je rencontre ce problème. première fois selon la recommandation de l'alphazéro cela a fonctionné. mais dans la deuxième fois j'ai mis à 1.6 cela ne fonctionne pas comme "CACHE" cette erreur après le nettoyage et la reconstruction.

Essayez de désactiver "Build Automatically" comme Rollin_s l'a dit -> erreur toujours là!

J'ai donc supprimé le projet problématique (déjà défini sur 1.6) de l'Explorateur de packages et l'importez à nouveau -> il démarre une reconstruction et aucune erreur cette fois

J'espère que cela aide quelqu'un

ob.yann
la source
10

La correction doit remplacer une erreur de méthode de super classe n'est pas difficile, il vous suffit de changer la version source de Java en 1.6 car à partir de Java 1.6 @Override, l'annotation peut être utilisée avec la méthode d'interface. Afin de changer la version source en 1.6, suivez les étapes ci-dessous:

  1. Sélectionnez Projet, Clic droit, Propriétés
  2. Sélectionnez Java Compiler et cochez la case "Activer les paramètres spécifiques au projet"
  3. Faites maintenant le niveau de conformité du compilateur à 1,6
  4. Appliquer les modifications
Sunil
la source
10

Dans mon cas, ce problème s'est produit lorsque j'ai importé un projet Maven dans Eclipse. Pour résoudre ce problème, j'ai ajouté ce qui suit dans pom.xml:

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

Ensuite, dans le menu contextuel du projet, allez dans "Maven -> Mettre à jour le projet ...", et appuyez sur OK.

C'est ça. J'espère que cela t'aides.

mljrg
la source
Merci, je suppose que cela remplace la configuration de pom parent ou quelque chose. (J'annonce le problème dans l'autre sens, aucun problème d'éclipse, mais le compilateur de maven m'a jeté "doit passer outre, etc.")
Asoub
6

Dans mon cas, aucune des solutions ci-dessus ne fonctionne. Je dois retirer mon code source dans un autre dossier. Depuis eclipse, sélectionnez Fichier> Changer d'espace de travail> Autre ... puis importez le code dans les nouveaux espaces de travail. ça marche après ça.

Hắc Huyền Minh
la source
2

Cela se produit lorsque votre projet maven utilise un niveau de conformité du compilateur différent et que l'IDE Eclipse utilise un niveau de conformité du compilateur différent. Pour résoudre ce problème, nous devons modifier le niveau de conformité du compilateur du projet Maven au niveau utilisé par l'EDI.

1) Pour voir les utilisations du niveau de conformité du compilateur Java dans l'IDE Eclipse

*) Fenêtre -> Préférences -> Compilateur -> Niveau de conformité du compilateur: 1,8 (ou 1,7, 1,6 ,, ect)

2) Pour changer le niveau de conformité du compilateur Java du projet Maven

*) Allez dans "Projet" -> "Propriétés" -> Sélectionnez "Java Compiler" -> Modifiez le niveau de conformité du compilateur: 1.8 (ou 1.7, 1.6 ,, ect)

HashanR
la source