测试类报错:java.lang.ClassFormatError accessible: module java.base does not “opens java.lang“ to unnamed
·
问题描述
Idea上运行一个测试类,结果报错了,提示:

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 @63070bab
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
at javassist.util.proxy.SecurityActions.setAccessible(SecurityActions.java:159)
at javassist.util.proxy.DefineClassHelper$JavaOther.defineClass(DefineClassHelper.java:213)
at javassist.util.proxy.DefineClassHelper$Java11.defineClass(DefineClassHelper.java:52)
at javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:260)
at javassist.ClassPool.toClass(ClassPool.java:1232)
at javassist.ClassPool.toClass(ClassPool.java:1090)
at javassist.ClassPool.toClass(ClassPool.java:1048)
at javassist.CtClass.toClass(CtClass.java:1290)
at com.kuaishou.krpc.rpc.proxy.javassist.JavassistProxy.getProxy(JavassistProxy.java:96)
... 81 more
我的Java版本
openjdk version "11.0.3" 2019-04-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.3+7)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.3+7, mixed mode)
原因:JDK版本问题
因为项目是用 Java 8 编写,但是我用的Java11去启动,Build&Run的时候导致了问题
第一种解决方式
更改为正确的 Java 版本 8
第二种解决方式
- 复制下面的参数放到启动类的VM options
- 启动的时候通过配置界面启动
--add-opens=java.base/sun.net.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED
modify Options -> Add VM options



更多推荐

所有评论(0)