Cannot use a mapper function to get the Platform classloader
Thiago Henrique Hupner
thihup at gmail.com
Sat Dec 12 15:05:09 UTC 2020
Hi.
I'm playing around with layers and I needed the following:
Create a new layer where it doesn't have access to the boot layer using the
ModuleLayer.empty().
However, I'm getting the exception that java.base is not found. So I used
something like this:
ModuleLayer.boot().defineModules(conf, moduleName ->
myNewLayer.find(moduleName).isPresent() ? myClassLoader :
ModuleFinder.ofSystem().find(moduleName).isPresent() ?
ClassLoader.getPlatformClassLoader() : null).
Then I get the following exception: java.lang.LayerInstantiationException:
loader can't be 'null' or the platform class loader.
Why is there this restriction? How is the correct way of only enabling the
base modules to be found to the next layer and not the unnamed module.
Thanks!
More information about the jigsaw-dev
mailing list