5 Réponses :


6
votes

Malheureusement, le seul moyen est de supprimer réellement les annotations.

Si vous souhaitez que votre code soit compilé et exécuté avec Java 5, vous devez développer ciblant Java 5. Sinon, vous pourriez inviter accidentellement sur une méthode SDK spécifique Java 6 etc.


1 commentaires

On pourrait facilement les supprimer via une étape de pré-traitement cependant.



-1
votes

@override est valide dans Java 5 -> http://java.sun.com/j2se/1.5.0/docs/api/index.html?java/lang/override.html

Je vous recommande de vérifier les paramètres du compilateur de votre projet dans Eclipse, peut-être au projet -> compilateur -> erreurs / avertissements -> annotations?


6 commentaires

+1 - J'allais dire la même chose. J'utilise aussi @override et je suis toujours sur JDK 1.5.


La sémantique de remplacement a changé de bwetween Java 5 et 6 - en 5, il a provoqué une erreur de compilateur lorsqu'elle est utilisée sur une méthode mise en œuvre d'une interface. En 6, il provoque un avertissement lorsque pas utilisé sur une telle méthode. La question concerne la façon de traiter cette différence.


Oui @override est valide en Java 5. Mais la spécification a changé pour Java6. En Java6, vous pouvez connaître des méthodes d'annotation qui mettent en œuvre des méthodes d'interface. Ce n'était pas possible en Java6.


"Indique qu'une déclaration de méthode est destinée à remplacer une déclaration de méthode dans une superclasse" - le remplacement de la méthode de méthode est pris en charge, mais le remplacement d'interface de méthode n'est pas! (Ou quelqu'un s'il vous plaît corriger-moi)


C'est comme je l'ai écrit: la méthode-interface de remplacement est prise en charge depuis Java 6, mais malheureusement, ce changement n'est pas documenté nulle part (je pense qu'il y a un bogue officiel concernant l'API DOC ne pas être mis à jour).


Un de nombreux bugs sur ce numéro: Bugs.sun.com/bugdatabase/ View_bug.doo?bug_id=5008260



-1
votes

Java 6 est disponible pour la mise à jour du logiciel OS X. Vérifier. Lorsque vous l'avez, définissez-la pour être la version Java par défaut, puis compilez.


1 commentaires

Ce n'est pas vraiment une solution quand il veut aussi cibler Java 5.



2
votes

Vous pouvez utiliser JDK6 pour compiler le code 1.5. Utilisez -bootclasspath , -Target et -Source . Alternativement, je crois que le compilateur Eclipse traite @override le même (cela pourrait être faux!).

1.5 a terminé sa période de durée de vie, et je suggère de la laisser pour la pourriture.


2 commentaires

+1 pour suggérer -Target et -source. Serait intéressant de voir si cela fonctionne.


Est-ce que cela fonctionne, avez-vous essayé? ^^



4
votes

Apparemment, vous pouvez passer à Java 1.5 U21 et cela résoudra le problème:

Pourquoi Javac a-t-il échoué sur @override Annotation


1 commentaires

Je lis cette question et toutes ses réponses, et cela n'est pas confirmé pour JDK 1.5U21 et 1.5U22, voir Stackoverflow.com/questions/2335655/...