问题描述

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

第二种解决方式

  1. 复制下面的参数放到启动类的VM options
  2. 启动的时候通过配置界面启动
--add-opens=java.base/sun.net.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED

modify Options -> Add VM options
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

更多推荐