Doubts on automatic modules and what is exported at runtime

Alan Bateman Alan.Bateman at oracle.com
Fri Oct 5 22:04:31 UTC 2018


On 05/10/2018 22:23, Thomas Watson wrote:
> :
>
> When launching Java I can use a module path that includes automatic modules
> along with normal modules that require the automatic module names.
> Everything works as expected, my normal modules are able to access the
> packages included in the automatic module as if they are exported.  Now I
> try to use the ModuleLayer API to create a new layer which includes the
> same set of automatic and normal modules.  If I use one of
> the defineModulesWithOneLoader method it all works just like it would when
> loading them from the module path.  But if I instead use one of
> the defineModulesWithManyLoaders my normal modules that requires one of the
> automatic modules can no longer load classes from the automatic module.
You are correct. For module M1 and M2, mapped to class loaders L1 and 
L2: if M1 reads M2 then L1 needs to delegate to L2 for each package that 
M2 exports to M1. If M2 is an automatic module then it doesn't have any 
exports to this is why the delegation isn't setup. I'll create a bug for 
this.

-Alan


More information about the jigsaw-dev mailing list