Is there really a jdk.proxy1 module?
David M. Lloyd
david.lloyd at redhat.com
Tue Dec 8 15:05:06 UTC 2015
Or better yet, to the module defining the proxy interface(s)... of
course, then you must ensure that they all are from the same module.
This is another area where having per-module class loaders is superior:
the getProxyClass()/newProxyInstance() methods already expect a class
loader for the first argument, so you can select a module which has
visibility to all the interfaces if so desired.
On 12/08/2015 09:02 AM, Rafael Winterhalter wrote:
> What is the advantage of adding runtime generated classes to a specific
> named module? If all generated classes are collected in a single module,
> this module does not have a meaningful readability scope. If enough
> interfaces are proxied, the proxy module will converge to full read access,
> wouldn't it?
>
> Why not add such proxy classes to a class loader's unnamed module?
>
> 2015-12-08 15:52 GMT+01:00 Sundararajan Athijegannathan <
> sundararajan.athijegannathan at oracle.com>:
>
>> addRead -> addReads
>>
>> -Sundar
>>
>>
>> On 12/8/2015 8:20 PM, Sundararajan Athijegannathan wrote:
>>
>>> Because jdk.proxy1 is a dynamically created module, you've to
>>> programmatically add read using java.lang.reflect.Module (addRead method)
>>> API.
>>>
>>> -Sundar
>>>
>>> On 12/8/2015 8:11 PM, Stephane Epardaud wrote:
>>>
>>>> Except I can't add reads to it:
>>>>
>>>> $HOME/no-backup/src/jdk1.9.0-jigsaw/bin/java
>>>> -XaddReads:jdk.proxy1=com.redhat.ceylon.model ...
>>>> Error occurred during initialization of VM
>>>> java.lang.RuntimeException: Unknown module: jdk.proxy1
>>>> at
>>>> jdk.internal.module.ModuleBootstrap.fail(java.base at 9.0/ModuleBootstrap.java:394)
>>>>
>>>> at
>>>> jdk.internal.module.ModuleBootstrap.addMoreReads(java.base at 9.0/ModuleBootstrap.java:319)
>>>>
>>>> at
>>>> jdk.internal.module.ModuleBootstrap.boot(java.base at 9.0/ModuleBootstrap.java:229)
>>>>
>>>> at java.lang.System.initPhase2(java.base at 9.0/System.java:1263)
>>>>
>>>> That must be a mistake though, otherwise I can't use reflection to read
>>>> annotations…
>>>>
>>>> On 08/12/15 15:32, Remi Forax wrote:
>>>>
>>>>> No,
>>>>> jdk.proxy1 is a module created dynamically by the class
>>>>> java.lang.reflect.Proxy.
>>>>>
>>>>> Rémi
>>>>>
>>>>> ----- Mail original -----
>>>>>
>>>>>> De: "Stephane Epardaud" <stef at epardaud.fr>
>>>>>> À: jigsaw-dev at openjdk.java.net
>>>>>> Envoyé: Mardi 8 Décembre 2015 15:21:57
>>>>>> Objet: Is there really a jdk.proxy1 module?
>>>>>>
>>>>>> I'm getting:
>>>>>>
>>>>>> java.lang.IllegalAccessException: class
>>>>>> com.redhat.ceylon.model.loader.impl.reflect.mirror.ReflectionAnnotation
>>>>>>
>>>>>> (in module com.redhat.ceylon.model) cannot access class
>>>>>> com.sun.proxy.jdk.proxy1.$Proxy3 (in module jdk.proxy1) because module
>>>>>> com.redhat.ceylon.model does not read module jdk.proxy1
>>>>>>
>>>>>> When using reflection to load annotations. Is there really a
>>>>>> "jdk.proxy1" module I need to import when doing reflection? Sounds
>>>>>> fishy, no?
>>>>>>
>>>>>> Cheers.
>>>>>>
>>>>>>
>>>
>>
--
- DML
More information about the jigsaw-dev
mailing list