Patch-module with dynamic layer creating.
Alan Bateman
Alan.Bateman at oracle.com
Thu Oct 11 11:27:18 UTC 2018
On 11/10/2018 10:57, Alex Sviridov wrote:
> Hi all,
>
> I create ModuleLayer this way
>
> ModuleFinder finder = ModuleFinder.of(dir1, dir2, dir3);
> ModuleLayer parent = ModuleLayer.boot();
> Configuration cf = parent.configuration().resolve(finder, ModuleFinder.of(), Set.of("myapp"));
> ClassLoader scl = ClassLoader.getSystemClassLoader();
> ModuleLayer layer = parent.defineModulesWithOneLoader(cf, scl);
> Class<?> c = layer.findLoader("myapp").loadClass("app.Main");
>
> And I need for newly created layer make the following:
> -patch-module java.xml.ws.annotation=jsr305-3.0.2.jar
>
> Could anyone say, how I can do it, taking into consideration that when I start JVM I don't
> know what layers I will create and what patch module I will need to use, so
> I can not use for it JVM parameters.
>
The --patch-module option is for patching modules in the boot layer,
there is no API support for patching modules when creating module layers
with the API. If you want to patch modules in custom module layers then
you need a create a ModuleFinder that will find the patched module -
it's not too hard to do, it's essentially scanning the patch locations
to find additional packages and then pre-pending the patch so that
resources are found in the patch before looking in the unpatched module.
-Alan
More information about the jigsaw-dev
mailing list