Proxy classes and reflection (IllegalAccessException)
Neil Bartlett
njbartlett at gmail.com
Thu Apr 7 12:25:32 UTC 2016
Stephane, I don’t think that would help since the package is not exported: "module jdk.proxy2 does not export com.sun.proxy.jdk.proxy2”.
Regards,
Neil
> On 7 Apr 2016, at 13:13, Stephane Epardaud <stef at epardaud.fr> wrote:
>
> IIRC RestEasy needs to add a module read to that Class's module it wants to create a Proxy of.
>
> On 07/04/16 14:05, Alan Bateman wrote:
>> On 07/04/2016 12:39, Dawid Weiss wrote:
>>> I don't want to hijack the other thread, so here's a new one I'm stuck
>>> with. I get this exception (simplified stack trace a bit):
>>>
>>> Caused by: java.lang.IllegalAccessException: class
>>> org.jboss.resteasy.core.ContextParameterInjector cannot access class
>>> com.sun.proxy.jdk.proxy2.$Proxy65 (in module jdk.proxy2) because
>>> module jdk.proxy2 does not export com.sun.proxy.jdk.proxy2 to unnamed
>>> module @79ca92b9
>>> at sun.reflect.Reflection.throwIllegalAccessException(java.base at 9-ea/Reflection.java:411)
>>> at sun.reflect.Reflection.throwIllegalAccessException(java.base at 9-ea/Reflection.java:402)
>>> at sun.reflect.Reflection.ensureMemberAccess(java.base at 9-ea/Reflection.java:99)
>>> at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(java.base at 9-ea/AccessibleObject.java:355)
>>> at java.lang.reflect.AccessibleObject.checkAccess(java.base at 9-ea/AccessibleObject.java:347)
>>> at java.lang.reflect.Constructor.newInstance(java.base at 9-ea/Constructor.java:444)
>>> at org.jboss.resteasy.core.ContextParameterInjector.createProxy(ContextParameterInjector.java:94)
>>> ... 53 more
>>>
>>> I think RestEasy attempts to do create a new instance of a proxy class
>>> here (the complete process here eludes my understanding for now). Any
>>> clues how this can be solved?
>> I assume it should be using newProxyInstance rather that trying to instantiate the proxy class directly. The reason it can't instantiate it directly is because it has been generated into a "dynamic module" (jdk.proxy2 in this case). I assume you'll find that the proxy was created with an interface that is not in an exported package.
>>
>> The "Package and Module Membership of Proxy Class" and "Dynamic Modules" sections of the Proxy javadoc [1] has all the details.
>>
>> -Alan.
>>
>> [1] http://download.java.net/java/jdk9/docs/api/java/lang/reflect/Proxy.html
>>
>>
>
More information about the jigsaw-dev
mailing list