将LogManager(L4j2)与Java 8(java.lang.Reflt.Annotated

将LogManager(L4j2)与Java 8(java.lang.Reflt.AnnotatedElement)结合使用时出错

我只是在将我的一个新项目的JDK版本从7u45切换到8u20时,遇到了一个奇怪的错误。拒绝在我的类开始时进行无害的LogManager声明,但有以下错误:

无法解析java.lang.反射t.AnnotatedElement类型。它是从所需的.class文件间接引用的。

这是代码:

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

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

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


慕码人8056858
浏览 500回答 3
3回答

牧羊人nacy

当使用JDK 8和IDE(或任何其他代码处理工具/框架)和它自己的编译器(如Eclipse)时,您必须使用Java 8支持将该工具更新为一个版本,即使您没有使用更新的Java 8特性。原因是编译器必须能够加载JRE的较新的类文件,才能编译引用这些类的软件。有时,当旧编译器忽略类文件的更新版本号时,您可以使用它。但有些类型会混淆旧类文件解析器,因为它们使用新功能,特别是AnnotatedElement,现在default方法,以及Map.Entry..interface现在static方法。Eclipse似乎对找不到类文件的引用和当它说“类名无法解决“。使用ECJ作为嵌入式编译器的所有工具和框架也是如此。

慕标琳琳

如果在从Eclipse内部运行的Tomcat中发生这种情况(问题关闭为重复并在此处重定向),转到Preferences→Server→运行时环境→Tomcat版本→编辑…并确保所选的JRE与Tomcat版本匹配。(也许你需要安装一个。)

神不在的星期二

解决方案1:尝试更改源级别。转到Project>Preferences>JavaCompiler。启用特定于项目的设置将编译器遵从性级别设置为1.4或更低。重新启动解决方案2:创建一个新的工作区。将项目文件复制到新工作区。将项目导入Eclipse并重新构建。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java