Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make private java.lang.StackTraceElement() accessible: module java.base does not "opens java.lang" to unnamed module @72035809
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.Constructor.checkCanSetAccessible(Constructor.java:188)
at java.base/java.lang.reflect.Constructor.setAccessible(Constructor.java:181)
at com.caucho.hessian.io.JavaDeserializer.<init>(JavaDeserializer.java:120)
at com.caucho.hessian.io.StackTraceElementDeserializer.<init>(StackTraceElementDeserializer.java:60)
at com.caucho.hessian.io.ContextSerializerFactory.<clinit>(ContextSerializerFactory.java:486)
... 57 common frames omitted
这个错误信息表明你的代码在尝试通过反射访问java.lang.StackTraceElement
的私有构造函数时遇到了问题。从Java 9开始,由于模块系统的引入,这种访问变得更加严格了。具体来说,java.base
模块没有开放java.lang
包给未命名模块(即不在任何命名模块中的代码)。
解决方法:
可以在启动JVM时使用命令行参数来打开特定的包以供反射访问。
--add-opens java.base/java.lang=ALL-UNNAMED