Loading an automatic module from an exploded directory
Alan Bateman
Alan.Bateman at oracle.com
Sun Apr 19 10:25:41 UTC 2020
On 18/04/2020 23:04, Eirik Bjørsnøs wrote:
> :
>
> Could we update ModulePath could to detect "automatic module
> directories"?. Any directory path name ending with ".jar" could be
> loaded as an automatic directory module, with the same semantics as if
> the directory was zipped into a JAR.
>
> This would require a refactoring of deriveModuleDescriptor to allow it
> being called both from readJar and readExplodedModule.
> Then readExplodedModule would need an update to detect the lack of
> module-info.class, and call deriveModuleDescriptor just like readJar
> does. scan(Path) would need an update to make it skip directory
> scanning on directories ending with ".jar".
>
> As far as I can tell, this would be (or allow) an implementation of
> MultiModuleJARs.
>
Directories with a ".jar" suffix is clever but I don't think it gets
away from the substantive issue that Java SE only specifies how
automatic modules come into being when they are packaged as JAR files. I
could also imagine tools and libraries that scan tripping up on
directories named ".jar". There are also many libraries that peek into
the JAR manifest with the java.util.jar APIs so they will be surprised too.
Just on MultiModuleJARs (and its buddy #MultiModuleExecutableJARs). This
would probably be significant enough to need a JEP. It would need to
explore whether the modules in the JAR are observable when the JAR file
is on the module path, this amounts to deciding if they are resolved and
loaded into the boot layer or child later. If observable on the module
path then it mean javac would need to support it. Automatic modules
would bring many discussion points to the table. One of their important
roles of automatic modules is to bridge to the class path so what does
not mean when everything is packaged into the same JAR file, does the
JAR file have a directory with the "class path" too? There are
implications for jlink and several other tools (jar) aswell. So in
summary, and at least in my view, there is a lot more exploration needed
before doing just implementation changes to support "exploded automatic
modules" in JAR files.
-Alan
More information about the jigsaw-dev
mailing list