首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java内部使用Java 9的反射?

如何在Java内部使用Java 9的反射?
EN

Stack Overflow用户
提问于 2016-06-22 07:59:53
回答 1查看 2.5K关注 0票数 5

我们只在测试框架中使用这种类型的反射,而不是在生产中使用。我们希望根据测试代码向应用类加载程序添加一些jar文件。有什么解决办法吗?如何才能访问未导出的类?

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-22 09:45:17

访问模块-内部类不能通过代码完成。这是故意的。但是,命令行有一个解决办法--这是java上的一个非标准化选项,可以做您想做的事情:

代码语言:javascript
复制
--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)国旗可能不完全是这样工作的。请留下评论,它将得到解决。

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

https://stackoverflow.com/questions/37961954

复制
相关文章

相似问题

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