Reputation: 654
I got really nasty problem that I do not understand...
We have a whole set of util-libraries written with jdk8 and no relation to jigsaw so we also do not have set the Automatic-Module-Name within the META-INF file.
Now we need to migrate a product to java11 that uses these util-libraries.
From my IDE I get the folloging error:
package 'x' is declared in the unnamed module but module 'y' does not read it.
package x is within one of our util-libraries and module y is the product that should be migrated to java11.
Any ideas so that I can understand this problem?
Best regards
Upvotes: 4
Views: 9503
Reputation: 654
The solution of this specific problem was just my IDE. IntelliJ does not support reading "unnamed modules" or "automatic modules" from imported "projects" within the IDE. I already started a bugreport at jetbrains.
Upvotes: 4
Reputation: 165
I use AdoptOpenJDK jdk-11.0.3.7-hotspot and had the following exception message at runtime
class A (in module A) cannot access class B (in unnamed module @0x12345678) because module A does not read unnamed module @0x12345678
and solved it by using the --add-reads vm argument
--add-reads iamdsim.heat.adapter=ALL-UNNAMED
I read somewhere that only automatic modules "read" the unnamed module by default. But i could not find it in the java.lang.module packagedoc.
Edit: It is documented in The State of the Module System
jar-files with names for which no automatic module name can be derived are always a pain. It happens with numbers or reserved words like "interface" in the name (e.g. "db-interface-1.0.0.jar").
Upvotes: 4