Non-java resources creating split-package problems?
Stephan Herrmann
stephan.herrmann at berlin.de
Sat Aug 24 20:11:47 UTC 2019
Hi,
back then when working on our compiler I didn't pay much attention to non-Java
resources, as JLS doesn't make any mention of them.
Recently, however, we found that plain text files in a modular jar can well
cause the VM to refuse starting, complaining:
java.lang.LayerInstantiationException: Package foo in both module x and module y
at
java.base/jdk.internal.module.ModuleBootstrap.checkSplitPackages(ModuleBootstrap.java:470)
I would like to report this problem at build time, to avoid bad surprises at
launch time. For this I would like to learn what are the rules how non-Java
resources participate in JLS 7.4.3 ("uniquely visible").
The closest I could find was in the javadoc of
java.lang.Module.getResourceAsStream(String)
While it doesn't touch the split package issue, it introduces a distinction into
encapsulated and not encapsulated resources, based on a package name (while at
the same time judging by JLS no package exists). I guess this holds part of my
answer but still I couldn't quite connect the remaining dots.
Where is it defined, in which situation non-Java resources contribute to
illegally split packages?
Can a resource "package" conflict with a Java package in another module? Which
of the two needs to be exported / opened in order to create a conflict? Etc...
best,
Stephan
More information about the jigsaw-dev
mailing list