.\" Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved.
.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
.\"
.\" This code is free software; you can redistribute it and/or modify it
.\" under the terms of the GNU General Public License version 2 only, as
.\" published by the Free Software Foundation.
.\"
.\" This code is distributed in the hope that it will be useful, but WITHOUT
.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
.\" FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
.\" version 2 for more details (a copy is included in the LICENSE file that
.\" accompanied this code).
.\"
.\" You should have received a copy of the GNU General Public License version
.\" 2 along with this work; if not, write to the Free Software Foundation,
.\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
.\"
.\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
.\" or visit www.oracle.com if you need additional information or have any
.\" questions.
.\"
.\" Automatically generated by Pandoc 2.3.1
.\"
.TH "JPACKAGE" "1" "2021" "JDK 17" "JDK Commands"
.hy
.SH NAME
.PP
jpackage \- tool for packaging self\-contained Java applications.
.SH SYNOPSIS
.PP
\f[CB]jpackage\f[R] [\f[I]options\f[R]]
.TP
.B \f[I]options\f[R]
Command\-line options separated by spaces.
See \f[B]jpackage Options\f[R].
.RS
.RE
.SH DESCRIPTION
.PP
The \f[CB]jpackage\f[R] tool will take as input a Java application and a
Java run\-time image, and produce a Java application image that includes
all the necessary dependencies.
It will be able to produce a native package in a platform\-specific
format, such as an exe on Windows or a dmg on macOS.
Each format must be built on the platform it runs on, there is no
cross\-platform support.
The tool will have options that allow packaged applications to be
customized in various ways.
.SH JPACKAGE OPTIONS
.SS Generic Options:
.TP
.B \f[CB]\@\f[R]\f[I]filename\f[R]
Read options from a file.
.RS
.PP
This option can be used multiple times.
.RE
.TP
.B \f[CB]\-\-type\f[R] or \f[CB]\-t\f[R] <type string>
The type of package to create
.RS
.PP
Valid values are: {"app\-image", "exe", "msi", "rpm", "deb", "pkg",
"dmg"}
.PP
If this option is not specified a platform dependent default type will
be created.
.RE
.TP
.B \f[CB]\-\-app\-version\f[R] <version>
Version of the application and/or package
.RS
.RE
.TP
.B \f[CB]\-\-copyright\f[R] <copyright string>
Copyright for the application
.RS
.RE
.TP
.B \f[CB]\-\-description\f[R] <description string>
Description of the application
.RS
.RE
.TP
.B \f[CB]\-\-help\f[R] or \f[CB]\-h\f[R]
Print the usage text with a list and description of each valid option
for the current platform to the output stream, and exit.
.RS
.RE
.TP
.B \f[CB]\-\-icon\f[R] <icon file path>
Path of the icon of the application package (absolute path or relative
to the current directory)
.RS
.RE
.TP
.B \f[CB]\-\-name\f[R] or \f[CB]\-n\f[R] <name>
Name of the application and/or package
.RS
.RE
.TP
.B \f[CB]\-\-dest\f[R] or \f[CB]\-d\f[R] <output path>
Path where generated output file is placed
.RS
.PP
Defaults to the current working directory.
(absolute path or relative to the current directory).
.RE
.TP
.B \f[CB]\-\-temp\f[R] <directory path>
Path of a new or empty directory used to create temporary files
(absolute path or relative to the current directory)
.RS
.PP
If specified, the temp dir will not be removed upon the task completion
and must be removed manually.
.PP
If not specified, a temporary directory will be created and removed upon
the task completion.
.RE
.TP
.B \f[CB]\-\-vendor\f[R] <vendor string>
Vendor of the application
.RS
.RE
.TP
.B \f[CB]\-\-verbose\f[R]
Enables verbose output.
.RS
.RE
.TP
.B \f[CB]\-\-version\f[R]
Print the product version to the output stream and exit.
.RS
.RE
.SS Options for creating the runtime image:
.TP
.B \f[CB]\-\-add\-modules\f[R] <module name> [\f[CB],\f[R]<module name>...]
A comma (",") separated list of modules to add
.RS
.PP
This module list, along with the main module (if specified) will be
passed to jlink as the \-\-add\-module argument.
If not specified, either just the main module (if \-\-module is
specified), or the default set of modules (if \-\-main\-jar is
specified) are used.
.PP
This option can be used multiple times.
.RE
.TP
.B \f[CB]\-\-module\-path\f[R] or \f[CB]\-p\f[R] <module path>...
A File.pathSeparator separated list of paths
.RS
.PP
Each path is either a directory of modules or the path to a modular jar,
and is absolute or relative to the current directory.
.PP
This option can be used multiple times.
.RE
.TP
.B \f[CB]\-\-jlink\-options\f[R] <jlink options>
A space separated list of options to pass to jlink
.RS
.PP
If not specified, defaults to "\-\-strip\-native\-commands
\-\-strip\-debug \-\-no\-man\-pages \-\-no\-header\-files"
.PP
This option can be used multiple times.
.RE
.TP
.B \f[CB]\-\-runtime\-image\f[R] <directory path>
Path of the predefined runtime image that will be copied into the
application image (absolute path or relative to the current directory)
.RS
.PP
If \-\-runtime\-image is not specified, jpackage will run jlink to
create the runtime image using options specified by \-\-jlink\-options.
.RE
.SS Options for creating the application image:
.TP
.B \f[CB]\-\-input\f[R] or \f[CB]\-i\f[R] <input path>
Path of the input directory that contains the files to be packaged
(absolute path or relative to the current directory)
.RS
.PP
All files in the input directory will be packaged into the application
image.
.RE
.SS Options for creating the application launcher(s):
.TP
.B \f[CB]\-\-add\-launcher\f[R] <launcher name>=<file path>
Name of launcher, and a path to a Properties file that contains a list
of key, value pairs (absolute path or relative to the current directory)
.RS
.PP
The keys "module", "main\-jar", "main\-class", "arguments",
"java\-options", "app\-version", "icon", "linux\-app\-category",
"linux\-app\-release", and "win\-console" can be used.
.PP
These options are added to, or used to overwrite, the original command
line options to build an additional alternative launcher.
The main application launcher will be built from the command line
options.
Additional alternative launchers can be built using this option, and
this option can be used multiple times to build multiple additional
launchers.
.RE
.TP
.B \f[CB]\-\-arguments\f[R] <main class arguments>
Command line arguments to pass to the main class if no command line
arguments are given to the launcher
.RS
.PP
This option can be used multiple times.
.RE
.TP
.B \f[CB]\-\-java\-options\f[R] <java options>
Options to pass to the Java runtime
.RS
.PP
This option can be used multiple times.
.RE
.TP
.B \f[CB]\-\-main\-class\f[R] <class name>
Qualified name of the application main class to execute
.RS
.PP
This option can only be used if \-\-main\-jar is specified.
.RE
.TP
.B \f[CB]\-\-main\-jar\f[R] <main jar file>
The main JAR of the application; containing the main class (specified as
a path relative to the input path)
.RS
.PP
Either \-\-module or \-\-main\-jar option can be specified but not both.
.RE
.TP
.B \f[CB]\-\-module\f[R] or \f[CB]\-m\f[R] <module name>/<main class>]
The main module (and optionally main class) of the application
.RS
.PP
This module must be located on the module path.
.PP
When this option is specified, the main module will be linked in the
Java runtime image.
Either \-\-module or \-\-main\-jar option can be specified but not both.
.RE
.SS Platform dependent option for creating the application launcher:
.SS Windows platform options (available only when running on Windows):
.TP
.B \f[CB]\-\-win\-console\f[R]
Creates a console launcher for the application, should be specified for
application which requires console interactions
.RS
.RE
.SS macOS platform options (available only when running on macOS):
.TP
.B \f[CB]\-\-mac\-package\-identifier\f[R] <ID string>
An identifier that uniquely identifies the application for macOS
.RS
.PP
Defaults to the the main class name.
.PP
May only use alphanumeric (A\-Z,a\-z,0\-9), hyphen (\-), and period (.)
characters.
.RE
.TP
.B \f[CB]\-\-mac\-package\-name\f[R] <name string>
Name of the application as it appears in the Menu Bar
.RS
.PP
This can be different from the application name.
.PP
This name must be less than 16 characters long and be suitable for
displaying in the menu bar and the application Info window.
Defaults to the application name.
.RE
.TP
.B \f[CB]\-\-mac\-package\-signing\-prefix\f[R] <prefix string>
When signing the application package, this value is prefixed to all
components that need to be signed that don\[aq]t have an existing
package identifier.
.RS
.RE
.TP
.B \f[CB]\-\-mac\-sign\f[R]
Request that the bundle be signed.
.RS
.RE
.TP
.B \f[CB]\-\-mac\-signing\-keychain\f[R] <keychain name>
Name of the keychain to search for the signing identity
.RS
.PP
If not specified, the standard keychains are used.
.RE
.TP
.B \f[CB]\-\-mac\-signing\-key\-user\-name\f[R] <team name>
Team or user name portion in Apple signing identities
.RS
.RE
.TP
.B \f[CB]\-\-mac\-app\-store\f[R]
Indicates that the jpackage output is intended for the Mac App Store.
.RS
.RE
.TP
.B \f[CB]\-\-mac\-entitlements\f[R] <file path>
Path to file containing entitlements to use when signing executables and
libraries in the bundle
.RS
.RE
.TP
.B \f[CB]\-\-mac\-app\-category\f[R] <category string>
String used to construct LSApplicationCategoryType in application plist
.RS
.PP
The default value is "utilities".
.RE
.SS Options for creating the application package:
.TP
.B \f[CB]\-\-about\-url\f[R] <url>
URL of the application\[aq]s home page
.RS
.RE
.TP
.B \f[CB]\-\-app\-image\f[R] <directory path>
Location of the predefined application image that is used to build an
installable package
.RS
.PP
(absolute path or relative to the current directory).
.PP
See create\-app\-image mode options to create the application image.
.RE
.TP
.B \f[CB]\-\-file\-associations\f[R] <file path>
Path to a Properties file that contains list of key, value pairs
(absolute path or relative to the current directory)
.RS
.PP
The keys "extension", "mime\-type", "icon", and "description" can be
used to describe the association.
.PP
This option can be used multiple times.
.RE
.TP
.B \f[CB]\-\-install\-dir\f[R] <directory path>
Absolute path of the installation directory of the application (on macos
or linux), or relative sub\-path of the installation directory such as
"Program Files" or "AppData" (on Windows)
.RS
.RE
.TP
.B \f[CB]\-\-license\-file\f[R] <file path>
Path to the license file (absolute path or relative to the current
directory)
.RS
.RE
.TP
.B \f[CB]\-\-resource\-dir\f[R] <directory path>
Path to override jpackage resources (absolute path or relative to the
current directory)
.RS
.PP
Icons, template files, and other resources of jpackage can be
over\-ridden by adding replacement resources to this directory.
.RE
.TP
.B \f[CB]\-\-runtime\-image\f[R] <directory path>
Path of the predefined runtime image to install (absolute path or
relative to the current directory)
.RS
.PP
Option is required when creating a runtime installer.
.RE
.SS Platform dependent options for creating the application package:
.SS Windows platform options (available only when running on Windows):
.TP
.B \f[CB]\-\-win\-dir\-chooser\f[R]
Adds a dialog to enable the user to choose a directory in which the
product is installed.
.RS
.RE
.TP
.B \f[CB]\-\-win\-help\-url\f[R] <url>
URL where user can obtain further information or technical support
.RS
.RE
.TP
.B \f[CB]\-\-win\-menu\f[R]
Request to add a Start Menu shortcut for this application
.RS
.RE
.TP
.B \f[CB]\-\-win\-menu\-group\f[R] <menu group name>
Start Menu group this application is placed in
.RS
.RE
.TP
.B \f[CB]\-\-win\-per\-user\-install\f[R]
Request to perform an install on a per\-user basis
.RS
.RE
.TP
.B \f[CB]\-\-win\-shortcut\f[R]
Request to create a desktop shortcut for this application
.RS
.RE
.TP
.B \f[CB]\-\-win\-shortcut\-prompt\f[R]
Adds a dialog to enable the user to choose if shortcuts will be created
by installer
.RS
.RE
.TP
.B \f[CB]\-\-win\-update\-url\f[R] <url>
URL of available application update information
.RS
.RE
.TP
.B \f[CB]\-\-win\-upgrade\-uuid\f[R] <id string>
UUID associated with upgrades for this package
.RS
.RE
.SS Linux platform options (available only when running on Linux):
.TP
.B \f[CB]\-\-linux\-package\-name\f[R] <package name>
Name for Linux package
.RS
.PP
Defaults to the application name.
.RE
.TP
.B \f[CB]\-\-linux\-deb\-maintainer\f[R] <email address>
Maintainer for .deb bundle
.RS
.RE
.TP
.B \f[CB]\-\-linux\-menu\-group\f[R] <menu\-group\-name>
Menu group this application is placed in
.RS
.RE
.TP
.B \f[CB]\-\-linux\-package\-deps\f[R]
Required packages or capabilities for the application
.RS
.RE
.TP
.B \f[CB]\-\-linux\-rpm\-license\-type\f[R] <type string>
Type of the license ("License: <value>" of the RPM .spec)
.RS
.RE
.TP
.B \f[CB]\-\-linux\-app\-release\f[R] <release string>
Release value of the RPM <name>.spec file or Debian revision value of
the DEB control file
.RS
.RE
.TP
.B \f[CB]\-\-linux\-app\-category\f[R] <category string>
Group value of the RPM <name>.spec file or Section value of DEB control
file
.RS
.RE
.TP
.B \f[CB]\-\-linux\-shortcut\f[R]
Creates a shortcut for the application.
.RS
.RE
.SH JPACKAGE EXAMPLES
.IP
.nf
\f[CB]
Generate\ an\ application\ package\ suitable\ for\ the\ host\ system:
\f[R]
.fi
.IP
.nf
\f[CB]
For\ a\ modular\ application:
\ \ \ \ jpackage\ \-n\ name\ \-p\ modulePath\ \-m\ moduleName/className
For\ a\ non\-modular\ application:
\ \ \ \ jpackage\ \-i\ inputDir\ \-n\ name\ \\
\ \ \ \ \ \ \ \ \-\-main\-class\ className\ \-\-main\-jar\ myJar.jar
From\ a\ pre\-built\ application\ image:
\ \ \ \ jpackage\ \-n\ name\ \-\-app\-image\ appImageDir
\f[R]
.fi
.IP
.nf
\f[CB]
Generate\ an\ application\ image:
\f[R]
.fi
.IP
.nf
\f[CB]
For\ a\ modular\ application:
\ \ \ \ jpackage\ \-\-type\ app\-image\ \-n\ name\ \-p\ modulePath\ \\
\ \ \ \ \ \ \ \ \-m\ moduleName/className
For\ a\ non\-modular\ application:
\ \ \ \ jpackage\ \-\-type\ app\-image\ \-i\ inputDir\ \-n\ name\ \\
\ \ \ \ \ \ \ \ \-\-main\-class\ className\ \-\-main\-jar\ myJar.jar
To\ provide\ your\ own\ options\ to\ jlink,\ run\ jlink\ separately:
\ \ \ \ jlink\ \-\-output\ appRuntimeImage\ \-p\ modulePath\ \\
\ \ \ \ \ \ \ \ \-\-add\-modules\ moduleName\ \\
\ \ \ \ \ \ \ \ \-\-no\-header\-files\ [<additional\ jlink\ options>...]
\ \ \ \ jpackage\ \-\-type\ app\-image\ \-n\ name\ \\
\ \ \ \ \ \ \ \ \-m\ moduleName/className\ \-\-runtime\-image\ appRuntimeImage
\f[R]
.fi
.IP
.nf
\f[CB]
Generate\ a\ Java\ runtime\ package:
\f[R]
.fi
.IP
.nf
\f[CB]
jpackage\ \-n\ name\ \-\-runtime\-image\ <runtime\-image>
\f[R]
.fi
