java jdk17版本使用cglib报错问题解决

渡星河
2023-03-09 / 0 评论 / 318 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年03月09日,已超过556天没有更新,若内容或图片失效,请留言反馈。

我们先看报错

Exception in thread "main" java.lang.ExceptionInInitializerError
    at com.spring6.cglib.Client.main(Client.java:7)
Caused by: net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InaccessibleObjectException-->Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @66cd51c3
    at net.sf.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:464)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @66cd51c3
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)

解决方法

也就是说我们jdk17要想使用这个cglib就必须解决这个问题,这个问题也就是兼容问题和jdk17的安全问题,像1.8版本的就没啥事

配置如下

--add-opens java.base/java.lang=ALL-UNNAMED
--add-opens java.base/sun.net.util=ALL-UNNAMED

1

2

3

4

1

评论 (0)

取消