微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

将我的一个新项目的JDK版本从7u45切换到8u20时,我遇到了一个奇怪的错误.在我的类开始时,一个无害的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建议我配置构建路径,但是我没有想法要配置什么,因为我不知道那个错误的根本问题.

使用JDK与版本7,一切正常.

解决方法

当使用JDK 8和具有自己的编译器(如Eclipse)的IDE时,必须将IDE更新为具有Java 8支持的版本,即使您没有使用较新的Java 8功能.

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

有时候,当它忽略较新版本的类文件时,可以使用较旧的编译器.但有些类型会混淆旧类文件解析器,因为它们使用新功能,特别是AnnotatedElement,现在有方法,而Map.Entry一个现在有静态方法的接口.

看来,Eclipse不会在不能找到类文件的引用中找到差异,而在“«classname»无法解析”时,类文件无法读取.

原文地址:https://www.jb51.cc/java/123907.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐