setAccessible() alternative with Jigsaw - feedback on Lookup
Alan Bateman
Alan.Bateman at oracle.com
Thu Apr 27 08:26:45 UTC 2017
On 26/04/2017 15:04, Matej Novotny wrote:
>> You can spin one module per package, by creating one ModuleLayer per package,
>> not unlike j.l.r.Proxy does.
> Don't know a bit about it, but it sounds like a way worth exploring.
> Would you have a pointer towards some code showing how to deal with ModuleLayers?
There are advanced examples in the Nashorn code where it is generating
code but it might be better to start with something more basic. One
example that could be useful to you is the translet code in the java.xml
module:
http://hg.openjdk.java.net/jdk9/jdk9/jaxp/file/tip/src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/TemplatesImpl.java
It creates a ClassLoader to load the generated code (it extends
ClassLoader and so gets to call its defineClass method). The code is
also in a module that it generates at run-time before the classes are
loaded.
>
> Also checking on j.l.r.Proxy, it uses the "good old" Unsafe.defineClass.
> Can't really see any module-related magic there.
>
I'm sure that Proxy and LambdaMetafactory will eventually move to using
new forms of Lookup.defineClass.
-Alan
More information about the jigsaw-dev
mailing list