Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
Security Level: public (Regular issues)
-
None
Description
libraries that depend on geronimo specs cannot be compiled as JPMS modules because of the naming convention used for the jars and the absence of an Automatic-Module-Name directive in MANIFEST.MF.
Reference: https://docs.oracle.com/javase/9/docs/api/java/lang/module/ModuleFinder.html#of-java.nio.file.Path...- for how JPMS determines module names.
For example, geronimo-annotation_1.2_spec-1.0-alpha-1.jar causes this exception:
Error occurred during initialization of boot layer java.lang.module.FindException: Unable to derive module descriptor for /home/christopher/.gradle/caches/modules-2/files-2.1/org.apache.geronimo.specs/geronimo-annotation_1.2_spec/1.0-alpha-1/804747c40f1145ae9cc13cb9e927fca82e6e3c1b/geronimo-annotation_1.2_spec-1.0-alpha-1.jar Caused by: java.lang.IllegalArgumentException: geronimo.annotation.1.2.spec: Invalid module name: '1' is not a Java identifier
This problem occurs with all geronimo specs that include a version in the artifact ID. For example, activemq-client depends on geronimo-j2ee-management_1.1_spec-1.0.1.jar so it cannot be compiled as a JPMS module.
Solution could be to add
Automatic-Module-Name
to the pom.xml: