Should ClassLoader::getResouces return the same resource twice?
Johannes Spangenberg
johannes.spangenberg at hotmail.de
Mon Jan 4 15:24:44 UTC 2021
> Looks like the ModuleLayer.defineModules is the thing I needed.
> With it, I can use my current classloader to load all the modules
> and it can find the classes from both module and unnamed module.
Note that class loaders for modules behave differently then original
class loaders. For example they will favor local class definitions over
class definitions of the parent loader. Not sure if there are other
important differences. The loader is implemented in
jdk.internal.loader.Loader [1].
> There is some trick to get a class from an upper layer to bind to the
> a class in the boot layer?
You can pass the created module layer as first argument to
ServiceLoader.load(ModuleLayer, Class) [2].
[1]
https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/jdk/internal/loader/Loader.java
[2]
https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/ServiceLoader.html#load(java.lang.ModuleLayer,java.lang.Class)
More information about the jigsaw-dev
mailing list