Je viens de rencontrer une erreur étrange lors du passage de la version JDK d’un nouveau projet du mien de 7 h 45 à 8 h 20. Une déclaration inoffensive de LogManager au début de ma classe est refusée avec l'erreur suivante:
Le type Java.lang.reflect.AnnotatedElement ne peut pas être résolu. Il est indirectement référencé à partir des fichiers .class requis.
C'est le code:
public class Class1 {
private static Logger log = LogManager.getLogger(Class1.class);
...
Eclipse me propose de configurer le chemin de génération, mais je ne sais pas quoi configurer car je ne connais pas le problème sous-jacent de cette erreur.
En utilisant le JDK avec la version 7, tout fonctionne bien.
Lorsque vous utilisez JDK 8 et un IDE (ou tout autre outil/framework de traitement de code) avec son propre compilateur, comme Eclipse, vous devez mettre à jour l'outil avec une version prenant en charge Java 8, même si vous n'utilisez pas le logiciel. nouvelles fonctionnalités de Java 8.
La raison en est que le compilateur doit pouvoir charger les fichiers de classe les plus récents du JRE afin de compiler votre logiciel qui référence ces classes.
Parfois, vous pouvez vous passer d'un compilateur plus ancien en ignorant le numéro de version le plus récent des fichiers de classe. Mais certains types vont confondre les anciens analyseurs de fichiers de classe car ils utilisent de nouvelles fonctionnalités, notamment AnnotatedElement
, qui a maintenant les méthodes default
, et Map.Entry
, un interface
qui a maintenant des méthodes static
.
Il semble qu'Eclipse ne fasse pas de différence entre les références pour lesquelles aucun fichier de classe n'a pu être trouvé et les fichiers de classe qu'il n'a pas pu lire en disant «« nom de classe » ne peut pas être résolu».
La même chose s'applique à tous les outils et frameworks utilisant la CJE comme compilateur intégré.
Si cela vous arrive dans Tomcat sous Eclipse ( question était fermé en double et redirige ici), allez à Préférences → Serveur → Environnements d'exécution → Version Tomcat → Éditer… et assurez-vous que le JRE sélectionné correspond à la version de Tomcat. (Peut-être que vous devez en installer un.)
Je change de JRE 8 à JRE 7 et redémarre Eclipse, puis tout fonctionne bien.
J'utilisais Eclipse Helios avec JRE 8 et la mise à jour du logiciel résolvait le problème.
Maintenant, j'utilise Eclipse Mars et fonctionne parfaitement -> https://Eclipse.org/downloads/
Solution 1:
Essayez de changer le niveau source.
Solution 2: