java 报错:java.lang.reflect.InaccessibleObjectException: Unable to make public void jdk.internal.ref.Cleaner.clean

发布于 / 随记 / 0条评论 / Tags: none / 5 次浏览

java 11 报错如下:

java.lang.reflect.InaccessibleObjectException: Unable to make public void jdk.internal.ref.Cleaner.clean() accessible: module java.base does not "exports jdk.internal.ref" to unnamed module @efde75f
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:340)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:280)
    at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:198)
    at java.base/java.lang.reflect.Method.setAccessible(Method.java:192)
    at com.dianping.cat.util.CleanupHelper.cleanup(CleanupHelper.java:51)
    at com.dianping.cat.message.internal.MessageIdFactory.close(MessageIdFactory.java:71)
    at com.dianping.cat.message.internal.MessageIdFactory$1.run(MessageIdFactory.java:266)

这个是java缺少模块导致,解决办法如下,java 启动加入参数

--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED

参考文档:

https://stackoverflow.com/questions/47891295/cannot-access-a-member-of-class-java-nio-directbytebuffer-in-module-java-base
https://stackoverflow.com/questions/40313090/java-9-options-add-exports-vs-xaddexports-not-recognized

    评论区(暂无评论)