No, you have to add a read to the module of the class you're proxying, not com.sun.proxy. That'd be your application's module.

On 07/04/16 14:25, Neil Bartlett wrote:
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 <s...@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@9-ea/Reflection.java:411)
at 
sun.reflect.Reflection.throwIllegalAccessException(java.base@9-ea/Reflection.java:402)
at sun.reflect.Reflection.ensureMemberAccess(java.base@9-ea/Reflection.java:99)
at 
java.lang.reflect.AccessibleObject.slowCheckMemberAccess(java.base@9-ea/AccessibleObject.java:355)
at 
java.lang.reflect.AccessibleObject.checkAccess(java.base@9-ea/AccessibleObject.java:347)
at 
java.lang.reflect.Constructor.newInstance(java.base@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



Reply via email to