繁体   English   中英

如何修复“无法制作受保护的最终 java.lang.Class java.lang.ClassLoader.defineClass?

[英]How to fix "Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass?

我已经使用 java 16 开始了一个项目,并且我在整个项目中都遇到了错误:

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 @6dfcffb5

看起来我从不同版本的 java 获得的代码在这个特定版本中不起作用。 知道我需要在 pojo class 中更改什么。 我在应用程序中只有 1 个 pojo,因为它是微服务。

谢谢。

您正在使用旧版本的 Spring / Spring Boot 不兼容且不支持 Java 16。

根据Spring Compatibility Matrix ,您需要使用 Spring 5.3.x 或更高版本才能与 Java 16 兼容。

For Spring-Boot, you need 2.7.1 or later for Java 17 compatibility... according to this Spring And Spring Boot Versions page.

另请注意,Java 16 也已报废。 您可能应该使用 Java 的 LTS 版本之一; 即 Java 8、11 或 17。

(Winding back to an earlier Java LTS would "fix" the Spring compatibility issue, but IMO rolling Spring and Java forward is better. You don't want to be developing a new project on top of base that is already outdated.)


您看到的实际问题是由于某些东西(可能是 Spring 引导自定义类加载器)访问“内部”API。 除非您对 JVM 的启动方式进行一些调整,否则这将被阻止(在 Java 14 及更高版本中)。 本问答提供了一些背景信息:

但是,最好的解决方案是为您选择的 Spring 和 Spring 启动版本使用“支持”版本的 Java。

您可以通过以下步骤精确路径来定义 JRE 系统库:项目文件夹 -> 属性 -> Java 构建路径 -> 双击 JRE 系统库并选择您安装的 JRE,它适用于我。 对不起我的英语不好

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM