JPackage打包使用方法

JPackage 是 JDK 14 引入的一款命令行工具,用于将 Java 应用程序打包为原生安装包,如exe、dmg、pkg、deb、rpm。

介绍

jpackage 命令是从 Java 14 开始提供的,可以帮助我们为模块化或非模块化 Java 应用程序生成指定系统平台的可执行程序,而不用预先安装
JRE 环境。如何做到的呢?

我们知道 Java 程序必须在 JRE 环境才能运行, jpackage 其实是把 JREJAR 文件以及所有必要依赖项一起打包生成指定平台的可执行程序。例如
Windows 上的 exe 或 macOS 上的 dmg。每种格式都必须构建在其运行的平台上,没有跨平台支持。工具还提供了常见的自定义操作,如应用名,应用图标等。

查看jpackage帮助jpackage --help

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
用法:jpackage <options>

示例用法:
--------------
生成适合主机系统的应用程序包:
对于模块化应用程序:
jpackage -n name -p modulePath -m moduleName/className
对于非模块化应用程序:
jpackage -i inputDir -n name \
--main-class className --main-jar myJar.jar
从预构建的应用程序映像:
jpackage -n name --app-image appImageDir
生成应用程序映像:
对于模块化应用程序:
jpackage --type app-image -n name -p modulePath \
-m moduleName/className
对于非模块化应用程序:
jpackage --type app-image -i inputDir -n name \
--main-class className --main-jar myJar.jar
要为 jlink 提供您自己的选项,请单独运行 jlink:
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
生成 Java 运行时程序包:
jpackage -n name --runtime-image <runtime-image>
对预定义应用程序映像进行签名:
jpackage --type app-image --app-image <app-image> \
--mac-sign [<additional signing options>...]
注:此模式下允许的其他选项只有:
一组其他 mac 签名选项和 --verbose
........

jpackage创建可执行程序命令格式:

1
jpackage --input . --name YouAppName --main-jar youfile.jar

使用方法

Windows

对于 Windows,jpackage需要WiX 3.0或更高版本。

打包成 exe 程序:

1
jpackage --input . --name demo --main-jar demo.jar

可选参数:

  • –type : 指定打包后的格式,如 msi、exe,默认 exe。
  • –win-console:使用控制台窗口启动我们的应用程序
  • –win-shortcut : 在 Windows 开始菜单中创建快捷方式文件
  • –win-dir-chooser:让最终用户指定自定义目录来安装可执行文件

打包完成后会在指定目录下出现demo.exe文件。
安装之后,路径默认为C:\ProgramFile\demo目录下。

Linux

以Ubuntu系统为例,默认打出的安装包后缀为 .deb

1
jpackage --input . --name demo --main-jar demo.jar

使用apt install demo.deb安装

1
apt install hello_1.0_amd64.deb

安装之后,路径默认为/opt/hello/bin/demo

MacOs

Mac 平台运行 jpackage 命令会自动生成 dmg 安装包。

1
jpackage --input . --name demo --main-jar demo.jar

生成 hello-1.0.dmg 文件,双击弹出安装界面。
安装之后,路径默认为/Applications/demo.app/Contents/MacOS/demo

注意

jpackage目前不支持跨平台打包,正如官网介绍所说:

The jpackage 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.

参考


JPackage打包使用方法
https://zhyyao.me/2025/02/20/experience/jpackage_helper/
作者
zhyyao
发布于
2025年2月20日
许可协议