This patch adds a `--validate` option to the jar tool which can be used to 
validate a jar file that might be malformed. For instance, if a jar is a 
multi-release jar, it is malformed if different versions expose different APIs.

The implementation is straight forward since there already exists validation 
logic that is run when creating or updating a jar. This patch just exposes that 
logic directly under a new command line flag.

I've enhanced the existing ApiValidatorTest to also create malformed jars using 
the zip file APIs (the jar tool does not output malformed jars) and run them 
through `jar --validate`.

Note that while the jdk's jar tool does not output malformed jars, third-party 
archiving tools might, or the jar could have been manually edited.

Some prior discussion here: 
https://mail.openjdk.java.net/pipermail/core-libs-dev/2021-May/077420.html

Testing: running jdk/tools/jar test suite locally, tier 1-3 (in progress), 
manual testing.

-------------

Commit messages:
 - - Remove spurious test imports
 - Add tests
 - Change validate option wording to not mention multi-release jars
 - Add jar --validate

Changes: https://git.openjdk.java.net/jdk/pull/3971/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=3971&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8266835
  Stats: 146 lines in 4 files changed: 114 ins; 4 del; 28 mod
  Patch: https://git.openjdk.java.net/jdk/pull/3971.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/3971/head:pull/3971

PR: https://git.openjdk.java.net/jdk/pull/3971

Reply via email to