I'll go ahead with this enhancement, and make sure the wording is open to adding validation logic not related to multi-release jars in the future.

Jorn

On 12/05/2021 14:47, Jorn Vernee wrote:
On 12/05/2021 14:41, Alan Bateman wrote:
On 12/05/2021 11:58, Jorn Vernee wrote:
Hi,

I see that the jar tool has validation logic for multi-release jars that is triggered when creating or updating a jar that has a versioned file as an input. I wanted to ask what people think about the idea of exposing this validation logic directly under a --validate command line flag as well.

Malformed multi-release jars can cause compilation and runtime problems because the API exposed by the jar is different across different Java versions. Exposing the validation logic directly would allow for easy validation of jar files that are suspected of being malformed multi-release jars.

The validation logic is already cleanly separated into a separate Validator class in the source code, and adding a command line flag that exposes it directly is a relatively minimal change [1]. It seems like maybe the intent in the past was also to expose this validation logic directly?

What's the history here? Any opinions about exposing this validation logic through a command line option?

I think it could be useful, esp. if Maven or Gradle plugins could make use of it.

There is other validation that could be done. JDK-8207339 is one example where it would be useful to identify a JAR file with a services configuration file that disagrees with the module definition. I bring it up because a general --validate option could do more than the fingerprint check. If the intention is to limit it to MR JAR features then I think it will need a different and more specific option name.
Potentially doing other validation seems like a good idea to me as well. It seems like the validation logic could be expanded further in the future. I brought up multi-release jars because AFAICS that's the only thing the existing validation logic concerns itself with, but I don't see any reason why validation that doesn't relate to multi-release jars couldn't be added as well (and I guess I chose the name --validate for that reason :) )

Jorn

Reply via email to