Eclipse 无法打开 java 文件 -> 无法创建受保护的最终 java.lang.Class java.lang.ClassLoader.defineClass
Posted
技术标签:
【中文标题】Eclipse 无法打开 java 文件 -> 无法创建受保护的最终 java.lang.Class java.lang.ClassLoader.defineClass【英文标题】:Eclipse not able to open java files -> Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass 【发布时间】:2021-11-12 00:25:48 【问题描述】:添加Lombok
lib后出现以下错误
An error has occurred. See error log for more details.
Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @1d1c37d5
【问题讨论】:
您用[java-17]
和[eclipse-2021-09]
标记了您的问题。由于 Eclipse 2021-09 不支持 Java 17,我猜您已经安装了 Java 17 Support for Eclipse 2021-09 (4.21),这是即将于 2021 年 12 月 15 日与 Eclipse 2021-12 (4.22) 一起发布的 Java 17 支持的预览版/BETA。请确保this issue has been reported to Eclipse 带有一个最小的可重现示例和错误日志。
JDK 17 不再支持--illegal-access=permit
。如果以前的版本没有警告这种访问,那不是……
【参考方案1】:
将以下行添加到eclipse.ini
文件的末尾
--illegal-access=warn
--add-opens java.base/java.lang=ALL-UNNAMED
【讨论】:
由于您的问题专门提到了Java 17,因此指定--illegal-access=warn
没有意义,它不受支持,将被忽略。
但它在 Java 17 上运行,我确实添加了 Lombok lib,之后我遇到了问题。我在 Java 15 中遇到 2021-06 的同样问题
谢谢! 这解决了我在安装了 JDK 17 的 macOS 上尝试运行 Eclipse 2021-09(带有 lombok)时遇到的问题。如果没有这个修复,Eclipse 确实会启动并运行,但是每个导入的 Maven 项目都会被破坏并给出问题中的错误。我花了一整天的时间重新安装不同的 Eclipse 版本,重新导入项目,在 Eclipse 中选择不同的 JDK,使用和不使用 lombok 等等……没有任何效果。但是将这两行添加到eclipse.ini
解决了它。
@Thirumal 你交叉检查了吗?当您的计算机在您连接电源插头并将其涂成绿色后工作时,是否证明将其涂成绿色解决了问题?添加--add-opens java.base/java.lang=ALL-UNNAMED
选项没有没有效果的--illegal-access=warn
怎么样?
“我只是复制了这些行”——很好地总结了为什么我们被可怕的软件淹没了。即使是现在,在我明确告诉您这些是 两个 独立选项并且其中只有一个在 JDK 17 中有效之后,您甚至拒绝尝试理解。是的,没有绿色和拔下电缆,计算机无法工作,但插入电缆并涂上绿色涂料,计算机就可以工作。现在,你只需要明白这并不意味着绿色绘画是必要的。或者直接在 cmd 中执行jdk-17\bin\java --illegal-access=warn x
并注意警告信息。【参考方案2】:
更新到 Lombok 1.18.22 插件导致这个问题对我来说消失了。我确实尝试添加 --add-opens 标志,但 Eclipse 启动器对此犹豫不决。恕我直言,这只是 Java 17 和 Lombok Eclipse IDE 插件不兼容的结果。
【讨论】:
【参考方案3】:唯一对我有用的是直接从 lombok 网站下载 lombok,而不是使用 maven 文件夹中可用的那个。
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于Eclipse 无法打开 java 文件 -> 无法创建受保护的最终 java.lang.Class java.lang.ClassLoader.defineClass的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse无法打开提示could not open jvm.cfg错误
请问大家,eclipse下怎么安装jadclipse反编译插件啊,网上的方法都试了不行啊,无法打开class文件啊...