Confusion de chemin de classe : erreur java.lang.reflect.AnnotatedElement avec LogManager dans Java 8 à l'aide d'Eclipse
Lors de la transition de Java 7u45 à Java 8u20 , les développeurs peuvent rencontrer une erreur déroutante lors de l'utilisation de la classe LogManager. Une déclaration apparemment anodine de private static Logger log = LogManager.getLogger(Class1.class) renvoie une erreur : "Le type java.lang.reflect.AnnotatedElement ne peut pas être résolu. Il est indirectement référencé à partir des fichiers .class requis."
Eclipse invite les utilisateurs à configurer le chemin de construction, les laissant incertains quant à la cause première du problème. Cette erreur se produit en raison du changement de version sous-jacent de Java 8 JDK. Lorsque vous travaillez avec JDK 8 et un IDE qui utilise son compilateur (comme Eclipse), il est crucial de mettre à jour l'IDE vers une version prenant en charge Java 8.
Cette exigence découle du fait que le compilateur doit charger les derniers fichiers de classe du JRE pour compiler les logiciels faisant référence à ces classes. Bien que les compilateurs plus anciens puissent parfois ignorer les numéros de version des fichiers de classe mis à jour, certains types peuvent les confondre. AnnotatedElement, par exemple, inclut désormais les méthodes par défaut, tandis que Map.Entry est une interface avec des méthodes statiques ajoutées.
Le message d'erreur d'Eclipse, "« nom de classe » ne peut pas être résolu, » ne fait pas de différence entre les cas où les fichiers de classe introuvables et ceux pour lesquels le compilateur rencontre des problèmes de lecture. Des problèmes similaires peuvent survenir lors de l'utilisation d'outils et de frameworks intégrant le compilateur ECJ.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!