gpt4 book ai didi

java - 将 LogManager (l4j2) 与 Java 8 一起使用时出错(无法解析 java.lang.reflect.AnnotatedElement)

转载 作者:太空宇宙 更新时间:2023-11-04 14:14:23 26 4
gpt4 key购买 nike

我刚刚将我的新项目的 JDK 版本从 7u45 切换到 8u20 时遇到了一个奇怪的错误。我的类(class)开头的无害 LogManager 声明被拒绝,并出现以下错误:

The type java.lang.reflect.AnnotatedElement cannot be resolved. It is indirectly referenced from required .class files

这是代码:

public class Class1 {   
private static Logger log = LogManager.getLogger(Class1.class);
...

Eclipse 建议我配置构建路径,但我不知道要配置什么,因为我不知道该错误的根本问题。

使用版本 7 的 JDK,一切正常。

最佳答案

当使用 JDK 8 和带有自己的编译器(例如 Eclipse)的 IDE(或任何其他代码处理工具/框架)时,您必须将该工具更新到支持 Java 8 的版本,即使您没有使用较新的 Java 8 功能。

原因是编译器必须能够加载 JRE 的较新类文件,才能编译引用这些类的软件。

有时,当旧编译器忽略类文件的新版本号时,您可以摆脱它。但是某些类型会在旧的类文件解析器使用新功能时使它们感到困惑,特别是 AnnotatedElement ,现在有 default 方法和 Map.Entry ,一个接口(interface),现在具有静态方法。

似乎 Eclipse 并没有区分无法找到类文件的引用和在显示“<类名>无法解析”时未能读取的类文件。

这同样适用于使用 ECJ 作为嵌入式编译器的所有工具和框架。

关于java - 将 LogManager (l4j2) 与 Java 8 一起使用时出错(无法解析 java.lang.reflect.AnnotatedElement),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27932779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com