Klassenpfadverwirrung: java.lang.reflect.AnnotatedElement-Fehler mit LogManager in Java 8 unter Verwendung von Eclipse
Beim Übergang von Java 7u45 zu Java 8u20 , können Entwickler bei der Verwendung der LogManager-Klasse auf einen verwirrenden Fehler stoßen. Eine scheinbar harmlose Deklaration des privaten statischen Logger log = LogManager.getLogger(Class1.class) löst einen Fehler aus: „Der Typ java.lang.reflect.AnnotatedElement kann nicht aufgelöst werden. Er wird indirekt von den erforderlichen .class-Dateien referenziert.“
Eclipse fordert Benutzer auf, den Build-Pfad zu konfigurieren, sodass sie sich über die Grundursache des Problems nicht sicher sind. Dieser Fehler tritt aufgrund der zugrunde liegenden Java 8 JDK-Versionsänderung auf. Wenn Sie mit JDK 8 und einer IDE arbeiten, die seinen Compiler verwendet (z. B. Eclipse), ist es wichtig, die IDE auf eine Version zu aktualisieren, die Java 8 unterstützt.
Diese Anforderung ergibt sich aus der Tatsache, dass der Compiler geladen werden muss die neuesten Klassendateien aus der JRE, um Software zu kompilieren, die auf diese Klassen verweist. Während ältere Compiler manchmal die aktualisierten Versionsnummern der Klassendateien übersehen, können sie bei bestimmten Typen verwechselt werden. AnnotatedElement beispielsweise enthält jetzt Standardmethoden, während Map.Entry eine Schnittstelle mit hinzugefügten statischen Methoden ist.
Die Fehlermeldung von Eclipse „«Klassenname» kann nicht aufgelöst werden“ unterscheidet nicht zwischen Fällen, in denen Klassendateien vorhanden sind nicht gefunden werden können und solche, bei denen der Compiler Probleme beim Lesen hat. Ähnliche Probleme können bei der Verwendung von Tools und Frameworks auftreten, die den ECJ-Compiler integrieren.
Das obige ist der detaillierte Inhalt vonWarum wirft Java 8 „Der Typ java.lang.reflect.AnnotatedElement kann nicht aufgelöst werden' mit LogManager in Eclipse aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!