On 05/09/2017 14:08, KUBOTA Yuji wrote:

My following example program shows that automatic module can't read exported package by explicit module.

$ /jdk-9/bin/jar -d --file mlibs/org.astro.jar
org.astro jar:file:///jigsaw-sample/mlibs/org.astro.jar/!module-info.class
exports org.astro
requires java.base mandated

$ /jdk-9/bin/jar -d --file libs/com.greetings.jar
No module descriptor found. Derived automatic module.

com.greetings automatic
requires java.base mandated
contains com.greetings

$ /jdk-9/bin/java -p mlibs:libs -m com.greetings/com.greetings.Main
Exception in thread "main" java.lang.NoClassDefFoundError: org/astro/World
        at com.greetings/com.greetings.Main.main(Main.java:7)
Caused by: java.lang.ClassNotFoundException: org.astro.World
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)         at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
        ... 1 more

The issue here is that org.astro is not resolved because no module requires org.astro. If you add `--add-modules org.astro` to the command line then it will ensure that this module is resolved and you should see that com.greetings reads it.

-Alan

Reply via email to