Java8工程升级为17后无法启动,报错Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass

如下图所示,项目由Java8升级为Java17后,启动时报错
具体错误为Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass

Java8工程升级为17后无法启动,报错Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass_第1张图片


⏹这是由于 JDK 8 中有关反射相关的功能自从 JDK 9 开始就已经被限制了。
为了兼容原先的版本,需要在运行项目时添加 --add-opens java.base/java.lang=ALL-UNNAMED 选项来开启这种默认不被允许的行为。

⏹STS的Maven工程需要在如下图所示的地方配置参数

Java8工程升级为17后无法启动,报错Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass_第2张图片

如果要升级为Java17,还需要在下面的这几处地方修改配置
Java8工程升级为17后无法启动,报错Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass_第3张图片
Java8工程升级为17后无法启动,报错Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass_第4张图片
Java8工程升级为17后无法启动,报错Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass_第5张图片
Java8工程升级为17后无法启动,报错Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass_第6张图片

你可能感兴趣的:(Java,java)