我们只在测试框架中使用这种类型的反射,而不是在生产中使用。我们希望根据测试代码向应用类加载程序添加一些jar文件。有什么解决办法吗?如何才能访问未导出的类?
java.lang.reflect.InaccessibleObjectException: Unable to make member of class jdk.internal.loader.ClassLoaders$AppClassLoader accessible: module java.base does not export jdk.internal.loader to unnamed module @9f73a2
at jdk.internal.reflect.Reflection.throwInaccessibleObjectException(Reflection.java:414)
at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:174)
at java.lang.reflect.Method.checkCanSetAccessible(Method.java:191)
at java.lang.reflect.Method.setAccessible(Method.java:185)发布于 2016-06-22 09:45:17
访问模块-内部类不能通过代码完成。这是故意的。但是,命令行有一个解决办法--这是java上的一个非标准化选项,可以做您想做的事情:
--add-exports <module>/<package>=<target-module>(,<target-module>)*
updates <module> to export <package> to <target-module>,
regardless of module declaration.
<target-module> can be ALL-UNNAMED to export to all
unnamed modules.备注
Java 9是一个移动的目标,精确的语法已经更改了几次--就像这个答案一样。这意味着(a)下面的一些评论可能显得过时,(b)国旗可能不完全是这样工作的。请留下评论,它将得到解决。
https://stackoverflow.com/questions/37961954
复制相似问题