Question

J'utilise JDK1.6. Quand j'implémentent une interface et dans la classe mise en œuvre, si je donne @override avant mes noms de fonction, Eclipse génère une erreur de compilation. à-dire en dessous de code est erroné selon Eclipse.

public class SomeListener implements ServletContextListener {
    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
       // code
    }
    /* other overridden methods here */
}

Si je supprime l'annotation @Override, le code compile bien. Est-ce que cela signifie que JDK1.6 ne nous oblige pas à préfixer l'annotation @override plus?

Était-ce utile?

La solution

Vous avez probablement besoin de définir le niveau de conformité du compilateur dans Eclipse. Cela se trouve dans Fenêtre-> Préférences-> Java-> Compiler

Si les préférences du compilateur sont toujours mis à 1,5 le compilateur barf sur l'annotation de remplacement.

Edit:. Vérifiez également le niveau de conformité compilateur sur une base par projet si vous avez défini les à rien d'autre que par défaut

Autres conseils

Les paramètres du compilateur Java peut être à plusieurs endroits en fonction de la configuration choisie, La première consiste à Fenêtre-> Préférences-> Java-> compilateur, changement à 1,6 minimum, si elle a été fixée à une version antérieure. Une autre façon est un clic droit sur Projet-> Propriétés -> compilateur Java -> Conformité JDK -.> Sélectionnez minimum JDK1.6, cliquez sur Appliquer

Une fois les changements, laissez la construction du projet, il construit et prendre les changements en effet.

Si aucun des travaux d'options ci-dessus -. Essayez d'ajouter le rt.jar à classpath, il va corriger le problème

L'annotation @Override modifiée dans la version Java 1.6. En Java 1.5, le compilateur n'a pas permis d'annotation @Override sur les méthodes d'interface mises en œuvre, de 1.6, il le fait.

compilateur Java

Vous devez changer java version du compilateur dans les propriétés de projet -> compilateur Java

JDK1.6 soutient certainement. Je ne sais pas pourquoi vous auriez des questions.

Quelle erreur voyez-vous? La seule chose que je peux penser est de vous assurer que vous utilisez le JDK dans les paramètres du projet. Peut-être vous compilez contre un ancien JDK?

Non l'annotation @Override est encore utilisé. Vous devriez vérifier que la méthode de contextDestroyed est réellement présent dans l'interface ServletContextListener et de vérifier le package importé pour cette interface.

Il semble que votre compilateur est défini pour Java 5, lorsque @Override sur les interfaces n'a pas été autorisé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top