Question 'Dérogation à une méthode de superclasse' après l'importation d'un projet dans Eclipse


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 de mes méthodes substituées ne sont pas formatées correctement, provoquant l'erreur The method must override a superclass method.

Il peut être intéressant de mentionner que c'est avec des projets Android - pour une raison quelconque, les valeurs de l'argument de la méthode ne sont pas toujours remplies, donc je dois 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 peuplé 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, si je supprime mon code, et qu'Eclipse recréer automatiquement la méthode, il utilise les mêmes noms d'arguments 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 surchargées à la main. Si quelqu'un peut expliquer pourquoi cela arrive ou comment y remédier .. Je serais très heureux.

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


1126
2017-11-05 03:17


origine


Réponses:


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

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


1383
2017-11-05 03:33



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

Maintenant, il peut encore 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à vous verrez que le projet est fixé à 1.5, maintenant changez-le en 1.6. Vous devrez le faire pour tous les projets affectés.

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


301
2017-09-08 03:48



Dans le cas où cela arrive à quelqu'un d'autre qui a essayé à la fois alphazero et la méthode de Paul et ne fonctionnait toujours pas.

Pour moi, éclipse d'une certaine façon «mis en cache» les erreurs de compilation, même après avoir fait un projet> Clean ...

J'ai dû décocher Projet> Construire automatiquement, puis faire un Projet> Nettoyer, puis reconstruire.

De même, en cas de doute, essayez de redémarrer Eclipse. Cela peut corriger beaucoup d'erreurs maladroites et inexplicables.


74
2018-01-26 17:22



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.


38
2017-12-26 09:38



La réponse de Paul a travaillé pour moi partiellement. J'avais toujours une erreur alors. Donc, en plus de cela, je devais aussi aller à Properties-> Project Facets et y définir la version Java de 1.5 à 1.6.

Peut-être que ça aide.


18
2018-02-05 16:25



Les gars dans mon cas aucune des solutions ci-dessus travaillé.

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

  • .projet
  • .classpath

Et le dossier:

  • .paramètres

Ensuite, j'ai copié ceux d'un projet similaire qui fonctionnait avant. 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!


11
2017-12-28 20:31



Si rien de ce qui précède ne vous aide, assurez-vous d'avoir un bon "Environnement d'exécution"sélectionné, et ne pas un "JRE alternatif".

Pour être trouvé sous:

Projet -> Build Path -> Bibliothèques

Sélectionnez le JRE System Library et cliquez Edit....

Si "Alternate JRE ..." est sélectionné, remplacez-le par "Environnement d'exécution" JavaSE-1.8 (jre1.8.0_60). Aucune idée pourquoi, mais cela va le résoudre.


9
2017-09-04 21:44



C'est la deuxième fois que je rencontre ce problème. première fois selon la recommandation de l'alphazero cela a fonctionné. mais dans la deuxième fois que je mets à 1.6 cela ne fonctionne pas comme 'CACHE' cette erreur après nettoyer et reconstruire.

Essayez d'éteindre 'Construire automatiquement' comme Rollin_s dit -> erreur toujours là!

J'ai donc supprimé le projet de problème (déjà défini à 1.6) de l'Explorateur de packages et l'ai importé à nouveau -> il démarre une reconstruction et pas d'erreur cette fois

J'espère que cela aide quelqu'un


8
2017-12-14 06:20



Allez dans windows-> preferences -> Java -> compilateur -> Sélectionnez le niveau de conformité du compilateur à 1.6 (quelle version vous voulez) -> Apply-> ok. maintenant son travail.


7
2017-12-08 09:46



La correction doit surcharger une erreur de méthode de classe super n'est pas difficile, vous avez juste besoin de changer la version de source de Java à 1.6 parce que de Java 1.6 @Override l'annotation peut être employé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 Compilateur Java et cochez la case "Activer les paramètres spécifiques au projet"
  3. Maintenant, rendez le niveau de conformité du compilateur à 1,6
  4. Appliquer les modifications

7
2018-04-21 06:23