jpackage 是 jdk 14+ 自带工具,用于将可执行 jar 与精简 jre 封装为平台原生安装包(如 windows .exe/.msi、macos .dmg、linux .deb)或便携式 app-image;需满足 jdk 版本、可运行 jar、对应平台构建工具三大前提。

Java 使用 jpackage 打包原生安装包,核心是把可执行 JAR 和精简 JRE 一起封装成平台专属格式(如 Windows 的 .exe 或 .msi、macOS 的 .dmg、Linux 的 .deb),用户无需预装 Java 即可安装运行。
基础前提要满足
缺一不可,否则命令直接报错:
- JDK 14 及以上(推荐 JDK 17 或 21 LTS)——
jpackage是 JDK 自带工具,位于$JAVA_HOME/bin/jpackage - 一个能正常运行的可执行 JAR 包(即
java -jar your-app.jar能启动) - 目标平台对应构建工具:
- Windows:必须安装 WiX Toolset v3.11+(用于生成
.exe或.msi),并确保candle.exe和light.exe在系统 PATH 中 - macOS:需安装 Xcode 命令行工具(
xcode-select --install) - Linux:需安装
dpkg-deb(Debian/Ubuntu)或rpm-build(RHEL/CentOS/Fedora)
- Windows:必须安装 WiX Toolset v3.11+(用于生成
最简命令打包 Windows 安装版(.exe)
假设你的 JAR 在 C:\myapp\dist\myapp.jar,主类为 com.example.Main,想生成名为 “MyApp” 的安装程序:
jpackage --input C:\myapp\dist --main-jar myapp.jar --name MyApp --type exe --win-dir-chooser --win-shortcut --dest C:\myapp\output
说明:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
--input指向存放 JAR 的文件夹(不是 JAR 文件路径) -
--main-jar是 JAR 文件名(不是完整路径) -
--win-dir-chooser让安装时可自选安装目录 -
--win-shortcut自动在桌面和开始菜单创建快捷方式 - 输出目录
--dest必须已存在,且有写入权限
打包免安装版(便携式 app-image)
不生成安装程序,而是产出一个含精简 JRE 的可直接运行文件夹(类似绿色软件):
jpackage --input C:\myapp\dist --main-jar myapp.jar --name MyApp --type app-image --dest C:\myapp\output
结果是一个 MyApp 文件夹,内含 runtime/(裁剪后的 JRE)、app/myapp.jar 和平台原生启动器(如 MyApp.exe)。双击即可运行,适合内部测试或快速分发。
Linux/macOS 打包要点
命令结构一致,只需改 --type 和平台参数:
- macOS 打
.dmg:--type dmg,可加--mac-signing-key-chain <keychain></keychain>签名(上架 Mac App Store 必需) - Linux 打
.deb:--type deb,建议补充--linux-package-name myapp --linux-app-category Utility以规范桌面菜单归类 - 所有平台都支持
--java-options "-Xmx512m"传 JVM 参数,--icon指定应用图标(.ico/.icns/.png 格式)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










