Javafx Self Contained Application Packaging For Mac

You use the javapackager command to perform tasks related to packaging Java and JavaFX applications.

Synopsis

command

The task that you want to perform. See Commands for the javapackager Command.

Create a tool for packaging self-contained Java applications. Create a simple packaging tool, based on the JavaFX javapackager tool, that: Supports native packaging formats to give end users a natural installation experience. These formats include msi and exe on Windows, pkg and dmg on macOS, and deb and rpm on Linux. The application itself is entirely self-contained, has a JavaFX user interface and runs on Mac, Linux and Windows. When someone is preparing a draw, Santulator offers the possibility to save the.

options

One or more options for the command, separated by spaces. See Options for the createbss Command, Options for the createjar Command, Options for the deploy Command, Options for the makeall Command, and Options for the signjar Command.

Note:

The javapackager command isn’t available on Oracle Solaris.

Description

The Java Packager tool compiles, packages, and prepares Java and JavaFX applications for distribution. The javapackager command is the command-line version. For available Ant tasks, see JavaFX Ant Tasks in Java Platform, Standard Edition Deployment Guide.

For self-contained applications, the Java Packager for JDK 9 packages applications with a JDK 9 runtime image generated by the jlink tool. To package a JDK 8 or JDK 7 JRE with your application, use the JDK 8 Java Packager.

Commands for the javapackager Command

You can run the following commands from the command line, followed by the options for the command.

-createbss

Converts CSS files into binary form. See Options for the createbss Command for the options used with this command.

-createjar

Produces a JAR according to other parameters. See Options for the createjar Command for the options used with this command.

-deploy

Assembles the application package for distribution. Modular and nonmodular applications are supported. By default, the deploy task generates the base application package. It can also generate a self-contained application package, if requested. See Options for the deploy Command for the options used with this command.

The bundle for a self-contained application includes a custom runtime created by calling jlink. The Java Packager for JDK 9 packages applications with a JDK 9 runtime image. To package a JDK 8 or JDK 7 JRE with your application, use the JDK 8 Java Packager.

-makeall

Note:

The -makeall command for the Java Packager tool is deprecated in JDK 9 in preparation for removal in a future release.

Performs compilation, createjar, and deploy steps as one call, with most arguments predefined, and attempts to generate all applicable self-contained application packages. The source files must be located in a folder called src, and the resulting files (JAR, JNLP, HTML, and self-contained application packages) are put in a folder called dist. This command can be configured only in a minimal way and is as automated as possible. See Options for the makeall Command for the options used with this command.

-signjar

Note:

The -signjar command for the Java Packager tool is deprecated in JDK 9 in preparation for removal in a future release. It also doesn’t work with multirelease JAR file. Instead, use the jarsigner tool to sign the JAR file.

Signs JAR files with a provided certificate. See Options for the signjar Command for the options used with this command.

Options for the createbss Command

-outdir dir

Name of the directory that receives the generated output files.

-srcdir dir

Base directory of the files to pack.

-srcfiles files

List of files in srcdir. If omitted, all files in srcdir (which is a mandatory argument in this case) will be used.

Options for the createjar Command

-appclass app-class

Qualified name of the application class to be executed.

-argument arg

An unnamed argument to be inserted into the JNLP file as an <fx:argument> element.

-classpath files

List of dependent JAR file names.

-manifestAttrs manifest-attributes

List of names and values for additional manifest attributes. Syntax:

-nocss2bin

The packager doesn’t convert CSS files to binary form before copying to JAR file.

-noembedlauncher

If present, the packager will not add the JavaFX launcher classes to the jarfile.

-outdir dir

Name of the directory that receives the generated output files.

-outfile filename

Name (without the extension) of the file that’s generated.

-paramfile file

Properties file with named parameters and their default values to pass to the application.

-preloader preloader-class

Qualified name of the JavaFX preloader class to be executed. Use this option only for JavaFX applications. Don’t use for Java applications, including headless applications.

-runtimeversion version

Specifies the version of the required JavaFX Runtime.

-srcdir dir

Base directory of the files to pack.

-srcfiles files

List of files in srcdir. If omitted, all files in srcdir (which is a mandatory argument in this case) will be packed.

Options for the deploy Command

--add-modules modulename[,modulename..]

Specifies the root modules to resolve in addition to the initial module.

-allpermissions

If present, the application requires all security permissions in the JNLP file.

-appclass app-class

Qualified name of the application class to be executed.

-argument arg

An unnamed argument to be inserted into an <fx:argument> element in the JNLP file.

-Bbundler-argument=value

Provides information to the bundler that’s used to package a self-contained application. See Arguments for Self-Contained Application Bundles for information about the arguments for each bundler.

-callbacks callback-methods

Specifies one or more user callback methods in generated HTML. The format is the following:

-description description

Description of the application.

-embedjnlp

If present, the JNLP file embedded in the HTML document.

-embedCertificates

If present, the certificates will be embedded in the jnlp file.

-height height

Height of the application.

-htmlparamfile file

Properties file with parameters for the resulting application when it is run in the browser.

-isExtension

If present, the srcfiles as extensions.

--limit-modules modulename[,modulename..]

Limits the universe of observable modules.

-m modulename [/mainclass] or --module modulename [/mainclass]

Specifies the initial module to resolve, and the name of the main class to execute if not specified by the module.

-p module path or --module-path module path

A : separated list of directories, each directory is a directory of modules.

-name name

Name of the application.

-native type

Generate the files needed for a Java Web Start application when type is set to jnlp. Otherwise, generate self-contained application bundles, if possible. Use the -B option to provide arguments to the bundlers being used. If type is specified, then only a bundle of this type is created. If no type is specified, then all is used.

The following values are valid for type:

  • jnlp: Generates the .jnlp and .html files for a Java Web Start application.

  • all: Runs all of the installers for the platform on which it’s running, and creates a disk image for the application. This value is used if type isn’t specified.

  • installer: Runs all of the installers for the platform on which it’s running.

  • image: Creates a disk image for the application.

    Linux and Windows: The image is the directory that gets installed.

    macOS: The image is the .app file.

  • exe: Generates a Windows .exe package.

  • msi: Generates a Windows Installer package.

  • dmg: Generates a DMG file for macOS.

  • pkg: Generates a .pkg package for macOS.

  • mac.appStore: Generates a package for the Mac App Store.

  • rpm: Generates an RPM package for Linux.

  • deb: Generates a Debian package for Linux.

-nosign

Linux and macOS: If present, the bundle generated for self-contained applications isn’t signed by the bundler. The default for bundlers that support signing is to sign the bundle if signing keys are properly configured. This attribute is ignored by bundlers that don’t support signing.

-outdir dir

Name of the directory that receives the generated output files.

-outfile filename

Name (without the extension) of the file that is generated.

-paramfile file

Properties file with named parameters and their default values to pass to the application.

-preloader preloader-class

Qualified name of the JavaFX preloader class to be executed. Use this option only for JavaFX applications. Don’t use for Java applications, including headless applications.

-srcdir dir

Base directory of the files to pack.

-srcfiles files

List of files in srcdir. If omitted, all files in srcdir (which is a mandatory argument in this case) will be used.

--strip-native-commands [true false]

Remove command-line tools such as java.exe from the Java runtime that’s generated for packaging with self-contained applications. The default is true. To keep the tools in the runtime, specify false.

-templateId

Application ID of the application for template processing.

-templateInFilename

Name of the HTML template file. Placeholders are in the following form:

APPID is the identifier of an application and XXXX is one of following:

  • DT.SCRIPT.URL

    Location of dtjava.js in the Deployment Toolkit. By default, the location is

    http://java.com/js/dtjava.js.

  • DT.SCRIPT.CODE

    Script element to include dtjava.js of the Deployment Toolkit.

  • DT.EMBED.CODE.DYNAMIC

    Code to embed the application into a given placeholder. It is expected that the code is wrapped in the function() method.

  • DT.EMBED.CODE.ONLOAD

    All of the code needed to embed the application into a web page using the onload hook (except inclusion of dtjava.js).

  • DT.LAUNCH.CODE

    Code needed to launch the application. It’s expected that the code is wrapped in the function() method.

-templateOutFilename

Name of the HTML file generated from the template.

-title title

Title of the application.

-updatemode update-mode

Sets the update mode for the JNLP file.

-vendor vendor

Vendor of the application.

-width width

Width of the application.

Options for the makeall Command

Note:

The -makeall command for the Java Packager tool is deprecated in JDK 9 in preparation for removal in a future release.
-appclass app-class

Qualified name of the application class to be executed.

-classpath files

List of dependent JAR file names.

-height height

Height of the application.

-name name

Name of the application.

-preloader preloader-class

Qualified name of the JavaFX preloader class to be executed. Use this option only for JavaFX applications. Don’t use for Java applications, including headless applications.

-v

Enables verbose output.

-width width

Width of the application.

Options for the signjar Command

Note:

The -signjar command for the Java Packager tool is deprecated in JDK 9 in preparation for removal in a future release. It also doesn’t work with multirelease JAR files. Use the jarsigner tool to sign the JAR file.
-alias key-alias

Alias for the key.

-keyPass password

Password for recovering the key.

-keyStore file

Keystore file name.

-outdir dir

Name of the directory that receives the generated output files.

-storePass password

Password to check the integrity of the keystore or unlock the keystore.

-storeType type

Keystore type. The default value is jks.

-srcdir dir

Base directory of the files to pack.

-srcfiles files

List of files in srcdir. If omitted, all files in srcdir (which is a mandatory argument in this case) will be packed.

Arguments for Self-Contained Application Bundles

The -Bbundler-argument=value option for the -deploy command is used when generating self-contained applications. This option enables you to set an argument for the bundler that’s used to create self-contained applications. To set more than one argument, pass an instance of this option for each argument. Each type of bundler has its own set of arguments.

The following sections describe the valid arguments for the available bundlers:

General Bundler Arguments

General bundler arguments are valid for all bundlers.

appVersion=version

Version of the application package. Some bundlers restrict the format of the version string.

arguments=option=value

Arguments to pass to the application when it is started. Enclose the argument list in quotes. To pass multiple options, separate the option-value pairs with spaces, for example:

classPath=path

Class path relative to the assembled application directory. The path is typically extracted from the JAR file manifest, and doesn’t need to be set if you’re using the other javapackager commands.

dropinResourcesRoot=directory

Directory in which to look for bundler-specific drop-in resources. For example, on macOS, to look in the current directory for the Info.plist file, use the following:

The file is then found in the current directory: package/macosx/Info.plist.

icon=path

Location of the default icon to be used for application launchers and other assists.

Linux: The format must be .png.

macOS: The format must be .icns.

Windows: The format must be .ico.

identifier=value

Default value that is used for other platform-specific values such as mac.CFBundleIdentifier. Reverse DNS order is recommended, for example, com.example.application.my-application.

jvmOptions=option

Option to be passed to the JVM when the application is run. Any option that is valid for the java command can be used. To pass more than one option, use multiple instances of the -B option, as shown in the following example:

jvmProperties=property=value

Java system property to be passed to the VM when the application is run. Any property that’s valid for the -D option of the java command can be used. Specify both the property name and the value for the property. To pass more than one property, use multiple instances of the -B option, as shown in the following example:

mainJar=filename

Name of the JAR file that contains the main class for the application. The file name is typically extracted from the JAR file manifest, and doesn’t need to be set if you’re using the other javapackager commands.

preferencesID=node

Preferences node to examine to check for JVM options that the user can override. The node specified is passed to the application at runtime as the option -Dapp.preferences.id. This argument is used with the userJVMOptions argument.

runtime=path

Location of the JRE or JDK to use with a Java Web Start application, valid only when the -native option is set to jnlp.

Best 27 monitor for macbook pro. The Dell U3818DW is the best monitor for MacBook Pro that we've tested so far. It has some great features that make it very easy to get the most out of your Mac, whether it's a MacBook Pro, MacBook, or Mac Mini. It has a USB-C port, which supports power delivery of up to 95W. Best Monitors for MacBook Air in 2020. Best Overall: LG 27UK850-W. Best Value: HP Envy 27. Best Premium: LG UltraFine 5K 27MD5KL. Best Portable: AOC I1601FWUX. Best Curved: LG 38WK95C-W. Best Gaming: BenQ EW3270U. Best Mac monitors 2020. HP Pavilion 27 Quantum Dot Display: Best for home or small office. Acer H277HK: Best for 4K on a budget. BenQ DesignVue PD2720U: Best mid-range option for graphics & design. Philips Brilliance 329P9H: Large-screen luxury. AOC 22B22H: Best bargain option. Best 4K Monitors for Mac in 2019 Our pick Dell U2718Q. Dell's tried and tested U2718Q is a feature-laden monitor. HDR10 support LG 27UK850-W. One of LG's latest monitors, the 4K 27UK850-W sports USB-C. USB-C connection HP Z27. HP's new Z27 4K monitor may just take over the top spot after more.

userJvmOptions=option=value

JVM options that users can override. Any option that’s valid for the java command can be used. Specify both the option name and the value for the option. To pass more than one option, use multiple instances of the -B option, as shown in the following example:

macOS Application Bundler Arguments

mac.category=category

Category for the application. The category must be in the list of categories found on the Apple Developer website.

mac.CFBundleIdentifier=value

Value stored in the info plist for CFBundleIdentifier. This value must be globally unique and contain only letters, numbers, dots, and dashes. Reverse DNS order is recommended, for example, com.example.application.my-application.

mac.CFBundleName=name

Name of the application as it appears on the macOS menu bar. A name of fewer than 16 characters is recommended. The default is the name attribute.

mac.CFBundleVersion=value

Version number for the application, used internally. The value must be at least one integer and no more than three integers separated by periods (.) for example, 1.3 or 2.0.1. The value can be different than the value for the appVersion argument. If the appVersion argument is specified with a valid value and the mac.CFBundleVersion argument isn’t specified, then the appVersion value is used. If neither argument is specified, then 100 is used as the version number.

mac.signing-key-developer-id-app=key

Name of the signing key used for Developer ID or Gatekeeper signing. If you imported a standard key from the Apple Developer Website, then that key is used by default. If no key can be identified, then the application isn’t signed.

mac.bundle-id-signing-prefix=prefix

Prefix that is applied to the signed binary when binaries that lack plists or existing signatures are found inside the bundles.

macOS DMG (Disk Image) Bundler Arguments

The macOS DMG installer shows the license file specified by licenseFile, if provided, before allowing the disk image to be mounted.

licenseFile=path

Location of the End User License Agreement (EULA) to be presented or recorded by the bundler. The path is relative to the packaged application resources, for example, -BlicenseFile=COPYING.

systemWide=boolean

Flag that indicates which drag-to-install target to use. Set to true to show the Applications folder. Set to false to show the Desktop folder. The default is true.

mac.CFBundleVersion=value

Version number for the application, used internally. The value must be at least one integer and no more than three integers separated by periods (.) for example, 1.3 or 2.0.1. The value can be different than the value for the appVersion argument. If the appVersion argument is specified with a valid value and the mac.CFBundleVersion argument isn’t specified, then the appVersion value is used. If neither argument is specified, then 100 is used as the version number.

mac.dmg.simple=boolean

Flag that indicates if DMG customization steps that depend on executing AppleScript code are skipped. Set to true to skip the steps. When set to true, the disk window doesn’t have a background image, and the icons aren’t moved into place. If the systemWide argument is also set to true, then a symbolic link to the root Applications folder is added to the DMG file. If the systemWide argument is set to false, then only the application is added to the DMG file, no link to the desktop is added.

macOS PKG Bundler Arguments

The macOS PKG installer presents a wizard and shows the license file specified by the licenseFile argument as one of the pages in the wizard. The user must accept the terms before installing the application.

licenseFile=path

Location of the End User License Agreement (EULA) to be presented or recorded by the bundler. The path is relative to the packaged application resources, for example, -BlicenseFile=COPYING.

mac.signing-key-developer-id-installer=key

Name of the signing key used for Developer ID or Gatekeeper signing. If you imported a standard key from the Apple Developer Website, then that key is used by default. If no key can be identified, then the application isn’t signed.

mac.CFBundleVersion=value

Version number for the application, used internally. The value must be at least one integer and no more than three integers separated by periods (.) for example, 1.3 or 2.0.1. The value can be different than the value for the appVersion argument. If the appVersion argument is specified with a valid value and the mac.CFBundleVersion argument isn’t specified, then the appVersion value is used. If neither argument is specified, 100 is used as the version number.

Mac App Store Bundler Arguments

mac.app-store-entitlements=path

Location of the file that contains the entitlements that the application operates under. The file must be in the format specified by Apple. The path to the file can be specified in absolute terms, or relative to the invocation of javapackager. If no entitlements are specified, then the application operates in a sandbox that’s stricter than the typical applet sandbox, and access to network sockets and all files is prevented.

mac.signing-key-app=key

Name of the application signing key for the Mac App Store. If you imported a standard key from the Apple Developer Website, then that key is used by default. If no key can be identified, then the application isn’t signed.

mac.signing-key-pkg=key

Name of the installer signing key for the Mac App Store. If you imported a standard key from the Apple Developer Website, then that key is used by default. If no key can be identified, then the application isn’t signed.

mac.CFBundleVersion=value

Version number for the application, used internally. The value must be at least one integer and no more than three integers separated by periods (.) for example, 1.3 or 2.0.1. The value can be different than the value for the appVersion argument. If the appVersion argument is specified with a valid value and the mac.CFBundleVersion argument isn’t specified, then the appVersion value is used. If neither argument is specified, then 100 is used as the version number. If this version is an upgrade for an existing application, then the value must be greater than previous version number.

Linux Debian Bundler Arguments

The license file specified by the licenseFile argument isn’t presented to the user in all cases, but the file is included in the application metadata.

category=category

Category for the application. See Registered Categories in Desktop Menu Specification for examples.

copyright=string

Copyright string for the application. This argument is used in the Debian metadata.

email=address

Email address used in the Debian Maintainer field.

licenseFile=path

Location of the End User License Agreement (EULA) to be presented or recorded by the bundler. The path is relative to the packaged application resources, for example, -BlicenseFile=COPYING.

licenseType=type

Short name of the license type, such as -BlicenseType=Proprietary, or '-BlicenseType=GPL v2 + Classpath Exception'.

vendor=value

Corporation, organization, or individual providing the application. This argument is used in the Debian Maintainer field.

Linux RPM Bundler Arguments

category=category

Category for the application. See Registered Categories in Desktop Menu Specification for examples.

licenseFile=path

Location of the End User License Agreement (EULA) to be presented or recorded by the bundler. The path is relative to the packaged application resources, for example, -BlicenseFile=COPYING.

licenseType=type

Short name of the license type, such as -BlicenseType=Proprietary, or '-BlicenseType=GPL v2 + Classpath Exception'.

vendor=value

Corporation, organization, or individual providing the application.

Windows EXE Bundler Arguments

copyright=string

Copyright string for the application. The string must be a single line no longer than 100 characters. This argument is used in various executable file and registry metadata.

installdirChooser=boolean

Flag that indicates if the user can choose the directory in which the application is installed. Set to true to show a dialog box for the user to choose the directory. Set to false to install the application in the directory indicated by the systemWide argument. The default is false.

licenseFile=path

Location of the End User License Agreement (EULA) to be presented or recorded by the bundler. The path is relative to the packaged application resources, for example, -BlicenseFile=COPYING.

menuHint=boolean

Flag that indicates if a shortcut is installed on the Start menu or Start screen. Set to true to install the shortcut. The default is true.

shortcutHint=boolean

Flag that indicates if a shortcut is placed on the desktop. Set to true to add a shortcut to the desktop. The default is false.

systemWide=boolean

Flag that indicates if the application is installed in the Program Files directory or in the standard location in the users home directory. Set to true to install the application in Program Files. Set to false to install the application in the user's home directory. The default is false.

win.menuGroup=group

Menu group in which to install the application when menuHint is true. This argument is ignored when menuHint is false.

vendor=value

Corporation, organization, or individual providing the application. This argument is used in various executable file and registry metadata.

Windows MSI Bundler Arguments

installdirChooser=boolean

Flag that indicates if the user can choose the directory in which the application is installed. Set to true to show a dialog box for the user to choose the directory. Set to false to install the application in the directory indicated by the systemWide argument. The default is false.

licenseFile=path

Location of the End User License Agreement (EULA) to be presented or recorded by the bundler. The path is relative to the packaged application resources, for example, -BlicenseFile=COPYING.

menuHint=boolean

Flag that indicates if a shortcut is installed on the Start menu or Start screen. Set to true to install the shortcut. The default is true.

shortcutHint=boolean

Flag that indicates if a shortcut is placed on the desktop. Set to true to add a shortcut to the desktop. The default is false.

systemWide=boolean

Flag that indicates if the application is installed in the Program Files directory or in the standard location in the users home directory. Set to true to install the application in Program Files. Set to false to install the application in the user's home directory. The default is true.

win.menuGroup=group

Menu group in which to install the application when menuHint is true. This argument is ignored when menuHint is false.

vendor=value

Corporation, organization, or individual providing the application. This argument is used in various executable file and registry metadata.

Deprecated Options

The following options are no longer used by the packaging tool and are ignored if present.

-embedCertificates

If present, the certificates will be embedded in the JNLP file. Deprecated –deploy option.

-noembedlauncher

If present, the packager will not add the JavaFX launcher classes to the JAR file. Deprecated.

Notes

  • A -v option can be used with any task command to enable verbose output.

    Portable version: (2,526 KB) – unpack the zip in some folder and run html-notepad.exe from there. C for notepad mac. Universal version, works on all Windows version starting from Windows XP (coming)Mac OSInstallation package: (4,826 KB) Linux (requires GTK 3)Portable executable: (4,281 KB) – unpack the tarball in some folder and run html-notepad from there. Installation executable: (2,180 KB).

  • When the -srcdir option is allowed in a command, it can be used more than once. If the -srcfiles option is specified, then the files named in the argument are looked for in the location specified in the preceding -srcdir option. If there is no -srcdir preceding -srcfiles, then the directory from which the javapackager command is executed is used.

Examples

Example 1 Using the -createjar Command

Packages the contents of the classes directory to outjar.jar, and sets the application class to package.ClassName.

Example 2 Using the -deploy Command

Generates outfile.jnlp and the corresponding outfile.html files in outdir for the application AppName, which is started by package.ClassName and has dimensions of 34 by 43 pixels.

Example 3 Using the -makeall Command

Note:

The -makeall command for the Java Packager tool is deprecated in JDK 9 in preparation for removal in a future release.

Does all the packaging work including compilation, createjar, and deploy.

Example 4 Using the -signjar Command

Note:

The -signjar command for the Java Packager tool is deprecated in JDK 9 in preparation for removal in a future release. It also doesn’t work with multirelease JAR files. Use the jarsigner tool to sign the JAR file.

Signs all of the JAR files in the dist directory, attaches a certificate with the specified alias, keyStore and storePass, and puts the signed JAR files back into the dist directory.

Example 5 Using the -deploy Command with Bundler Arguments

Linux:

Generates the native Linux Debian package for running the BrickBreaker application as a self-contained application.

Windows:

Generates the native Windows EXE package for running the BrickBreaker application as a self-contained application.