On Wed, 5 Nov 2025 19:29:59 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 JDK tools, jpackage will print help output if the `-?` option is > specified on the command line. > > In addition to `--opt... @sashamatveev PTAL ------------- PR Comment: https://git.openjdk.org/jdk/pull/28163#issuecomment-3502680445
