为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕码人8056858 2019-07-04 17:52:00
将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,一切正常。
查看完整描述

3 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

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

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

有时,当旧编译器忽略类文件的更新版本号时,您可以使用它。但有些类型会混淆旧类文件解析器,因为它们使用新功能,特别是AnnotatedElement,现在default方法,以及Map.Entry..interface现在static方法。

Eclipse似乎对找不到类文件的引用和当它说“类名无法解决“。

使用ECJ作为嵌入式编译器的所有工具和框架也是如此。


查看完整回答
反对 回复 2019-07-04
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

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


查看完整回答
反对 回复 2019-07-04
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

解决方案1:

尝试更改源级别。

  1. 转到Project>Preferences>JavaCompiler。
  2. 启用特定于项目的设置
  3. 将编译器遵从性级别设置为1.4或更低。
  4. 重新启动

解决方案2:

  1. 创建一个新的工作区。
  2. 将项目文件复制到新工作区。
  3. 将项目导入Eclipse并重新构建。


查看完整回答
反对 回复 2019-07-04
  • 3 回答
  • 0 关注
  • 499 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信