On Wed, 19 Nov 2025 17:25:57 GMT, Alexey Semenyuk <[email protected]> wrote:

>> Use "JOpt Simple" from 
>> [jdk.internal.joptsimple](https://github.com/openjdk/jdk/tree/master/src/jdk.internal.opt/share/classes/jdk/internal/joptsimple)
>>  package to parse jpackage command line.
>> 
>> All command-line parsing code is placed in a new "jdk.jpackage.internal.cli" 
>> package with 92% unit test coverage.
>> 
>> ### Error reporting improved
>> 
>> 1. In case of multiple command-line errors, all are reported, unlike 
>> previously, only the first one was reported.
>> 
>> Command line (Windows): 
>> 
>> jpackage --linux-shortcut --mac-package-name foo -p m1 --linux-menu-group 
>> grp -p m2 --app-image dir
>> 
>> Old error output:
>> 
>> Error: Option [--linux-shortcut] is not valid on this platform
>> 
>> 
>> New error output:
>> 
>> Error: Option [--linux-shortcut] is not valid on this platform
>> Error: Option [--mac-package-name] is not valid on this platform
>> Error: Option [-p] is not valid with type [exe]
>> Error: Option [--linux-menu-group] is not valid on this platform
>> 
>> 
>>  2. Fix misleading error messages.
>> 
>> Command line (Windows): 
>> 
>> jpackage --input no --main-jar no.jar
>> 
>> Old error output:
>> 
>> jdk.jpackage.internal.model.ConfigException: The configured main jar does 
>> not exist no.jar in the input directory
>> 
>> 
>> New error output:
>> 
>> The value "no" provided for parameter --input is not a directory
>> 
>> 
>> 
>> 
>> ### Help output fixed
>> 
>> Options in the original help output were out of order. On macOS, options 
>> were placed in wrong sections. There were trailing whitespaces. 
>> 
>> The old help output is captured in the 
>> cd7bca2bb665556f314170c81129ef53de91f135 commit.
>> 
>> The reordered and filtered old help output is captured in the 
>> 10dc3792e6896cfa4bbe8693ee33e4c5df45d952 commit.
>> 
>> Help output in this PR is captured in the 
>> 58c2d944e2e14b1cf35786162ad2a5f9a8ccfee6 commit. Use it to see the diff 
>> between the new and old filtered and reordered help output.
>> 
>> ### Functional changes
>> 
>> Old tool provider implementation 
>> [jdk.jpackage.internal.JPackageToolProvider](https://github.com/openjdk/jdk/blob/5fccabff15ae8bcc3d03156fa331bbc0fefb0cbe/src/jdk.jpackage/share/classes/jdk/jpackage/internal/JPackageToolProvider.java#L48)
>>  had lousy thread-safety protection that didn't work when multiple instances 
>> of jpackage tool provider are created and invoked asynchronously. This patch 
>> fixes this issue. It is safe to invoke the same jpackage tool provider 
>> instance asynchronously, and also safe to invoke multiple instances of 
>> jpackage tool provider.
>> 
>> Like other JD...
>
> Alexey Semenyuk has updated the pull request with a new target base due to a 
> merge or a rebase. The incremental webrev excludes the unrelated changes 
> brought in by the merge/rebase. The pull request contains 56 additional 
> commits since the last revision:
> 
>  - AsyncTest: call javac and jar tool providers only once for all async 
> jpackage invocations instead of per each of them
>  - Merge branch 'master' into JDK-8333727
>  - the cli: Options: add copyWithDefaultValue(WithOptionIdentifier withId, 
> Supplier<Object> valueSupplier)
>  - PackageType: minor
>  - "main.option." -> "help.option."
>  - StandardValidator: rename IS_EXISTENT_NOT_DIRECTORY into 
> IS_FILE_OR_SYMLINK.
>  - Removed commented out code
>  - Fix typo and trailing whitespace
>  - Fix findings in the code review
>  - StandardValidator: expose
>  - ... and 46 more: https://git.openjdk.org/jdk/compare/6f10a48c...bee331c4

Looks good.

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

Marked as reviewed by almatvee (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/28163#pullrequestreview-3485149144

Reply via email to