RFR: 8375433: jar should validate automatic module names
Christian Stein
cstein at openjdk.org
Mon Jan 26 08:36:41 UTC 2026
On Tue, 20 Jan 2026 12:36:54 GMT, Christian Stein <cstein at openjdk.org> wrote:
> Please review this change to make `jar --validate` check an automatic module name given in a manifest file, via the `Automatic-Module-Name` attribute.
>
> Prior to this commit, a `MANFEST.MF` reading
>
> Automatic-Module-Name: default
>
> added into a JAR file named `a.jar` would not fail when passed to `jar --validate --file a.jar`. However, it does fail when the JAR file is put on the module path of the Java launcher. For example:
>
> $ java --module-path a.jar --describe-module default
>
> Error occurred during initialization of boot layer
> java.lang.module.FindException: Unable to derive module descriptor for a.jar
> Caused by: java.lang.module.FindException: Automatic-Module-Name: default: Invalid module name: 'default' is not a Java identifier
>
>
> With this change applied, `jar --validate --file a.jar` will print an error message and return a non-zero exit value:
>
>
> invalid module name of Automatic-Module-Name entry in manifest: default
>
>
> The new check also fails for when the module name of a compiled module descriptor differs from the value given in the manifest file of the same JAR file.
Thank you for the review, Jorn. I addressed all three suggestions in the latest commit.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/29316#issuecomment-3798412541
More information about the compiler-dev
mailing list