首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDK与JDK 17

JDK与JDK 17
EN

Stack Overflow用户
提问于 2021-09-21 06:53:11
回答 1查看 1.2K关注 0票数 2

Javassist (版本3.28.0-GA)在从JDK 11升级到17之后停止了工作。

调用CtClass#toClass会出现以下错误:

代码语言:javascript
复制
  ...
  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 @63e31ee
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:1240)
at javassist.CtClass.toClass(CtClass.java:1392)

有人知道解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-21 07:08:05

这似乎是JDK助手和JDK 16及更高版本(https://github.com/jboss-javassist/javassist/issues/369)的一个众所周知的问题。

票证中提到的解决方案是不再使用CtClass.toClass()

请不要再使用ctClass.toClass()了,试着用ctClass.toClass(neigborClass)代替.

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69264559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档