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. ------------- Commit messages: - Add tests for automatic module names - 8375433: jar should validate module names Changes: https://git.openjdk.org/jdk/pull/29316/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=29316&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8375433 Stats: 85 lines in 3 files changed: 76 ins; 6 del; 3 mod Patch: https://git.openjdk.org/jdk/pull/29316.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/29316/head:pull/29316 PR: https://git.openjdk.org/jdk/pull/29316
