Cor*_*air 14 java java-7 java-8 log4j2
我刚刚将一个新项目的JDK版本从7u45切换到8u20时遇到了一个奇怪的错误.我的类开头的无害LogManager声明被拒绝,并出现以下错误:
无法解析java.lang.reflect.AnnotatedElement类型.它是从所需的.class文件间接引用的
这是代码:
public class Class1 {
private static Logger log = LogManager.getLogger(Class1.class);
...
Run Code Online (Sandbox Code Playgroud)
Eclipse建议我配置构建路径,但我不知道要配置什么,因为我不知道该错误的根本问题.
使用JDK与版本7,一切正常.
Hol*_*ger 27
当使用JDK 8和IDE(或任何其他代码处理工具/框架)和自己的编译器(如Eclipse)时,即使您没有使用较新的Java 8功能,也必须将该工具更新为支持Java 8的版本. .
原因是编译器必须能够加载JRE的较新类文件,以便编译引用这些类的软件.
有时,当忽略类文件的较新版本号时,您可以使用较旧的编译器.但是,某些类型会混淆旧的类文件分析器,因为它们使用的新功能,特别是AnnotatedElement,现在有default方法,以及Map.Entry,一个interface现在有static方法.
似乎Eclipse没有在没有找到类文件的引用和在" «classname»无法解析" 时无法读取的类文件之间产生差异.
这同样适用于使用ECJ作为嵌入式编译器的所有工具和框架.
| 归档时间: |
|
| 查看次数: |
18903 次 |
| 最近记录: |