In this tutorial, I will show you how to use the JPackage to produce a self-contained JavaFX or Java 17 application includes all the necessary dependencies. It allows us to produce a native package in an exe or msi on Windows 11 x64.
The tool has options that allow packaged applications to be customized in various ways.
--type
The type of package to create
--input
Path of the input directory that contains the files to be packaged
--dest
Path where generated output file is placed
--main-jar
The main JAR of the application containing the main class
--main-class
Qualified name of the application main class to execute.
--module-path
The path to modular jars
--add-modules
Add list of modules
--win-shortcut
Creates a desktop shortcut for the application.
--win-menu
Adds the application to the system menu.
--description
Description of the application
--app-version
Version of the application and/or package
--verbose
Enables verbose output
--icon
Path of the icon of the application package
You should download and install the following:
JDK 17.0.1 is available from https://www.oracle.com/java/technolog...
Open JavaFX (OpenJFX) and JMODS 17.0.1 are available from https://gluonhq.com/products/javafx/
Java Scene Builder 17.0.0 is available from https://gluonhq.com/products/scene-bu...
IntelliJ IDEA Community Edition 2021.3 is available from https://www.jetbrains.com/idea/download/
WiX Toolset v3.11.2 is available from https://wixtoolset.org/releases/
The Installed directories are as follow:
C:\Program Files\Java\jdk-17.0.1
C:\Program Files\Java\javafx-sdk-17.0.1
C:\Program Files\Java\javafx-jmods-17.0.1
C:\Users\Ken\AppData\Local\SceneBuilder
C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.3
C:\Program Files (x86)\WiX Toolset v3.11
VM options:
--module-path "C:\Program Files\Java\javafx-sdk-17.0.1\lib"
--add-modules javafx.controls,javafx.fxml
JDK 17.0.1
JavaFX 17.0.1
JavaFX SceneBuilder 17.0.0
IntelliJ IDEA 2021.3
Windows 11 x64
JPackage command:
jpackage --type exe --input . --dest . --main-jar .\JavaFXHelloWorld.jar --main-class com.example.javafxhelloworld.App --module-path "C:\Program Files\Java\javafx-jmods-17.0.1" --add-modules javafx.controls,javafx.fxml --win-shortcut --win-menu
jpackage --type msi --app-version "2.0" --input . --dest . --main-jar .\JavaFXHelloWorld.jar --main-class com.example.javafxhelloworld.App --module-path "C:\Program Files\Java\javafx-jmods-17.0.1" --add-modules javafx.controls,javafx.fxml --win-shortcut --win-menu
jpackage --type exe --input . --dest . --main-jar .\JavaFXHelloWorld.jar --main-class com.example.javafxhelloworld.App --module-path "C:\Program Files\Java\javafx-jmods-17.0.1" --add-modules javafx.controls,javafx.fxml --win-shortcut --win-menu --icon "icon.ico" --name "My App" --app-version "2.0"
Source:
https://docs.oracle.com/en/java/javas...