Java 17桌面应用打包发布标准方案及用户部署疑问
发布Java 17桌面应用的解决方案
不需要用户安装JDK,甚至无需单独安装JRE。Java 9引入的jlink和Java 16正式纳入的jpackage工具,完全可以实现把你的应用和定制化的轻量JRE打包成原生安装包(比如MSI),用户安装后直接启动,全程感知不到Java的存在。
具体实现步骤
生成定制化轻量JRE
用jlink工具只打包应用依赖的Java模块,避免冗余内容,缩小整体体积。先通过jdeps分析你的application.jar依赖的模块,再执行打包命令:# 先分析应用依赖的Java模块 jdeps --list-deps application.jar # 生成专属定制JRE jlink --module-path "path/to/jdk/jmods" --add-modules 依赖模块列表 --output custom-jre打包成MSI安装包
用jpackage把定制JRE、应用jar打包成原生MSI,同时生成原生启动程序(替代原有的垫片exe),命令示例:jpackage --type msi ^ --input ./jar-dir ^ --main-jar application.jar ^ --main-class com.yourcompany.YourMainClass ^ --runtime-image ./custom-jre ^ --name YourAppName ^ --vendor "你的厂商名称" ^ --version 1.0.0 ^ --win-menu --win-shortcut --win-dir-chooser生成的MSI会自动完成:将定制JRE和应用部署到用户电脑,创建开始菜单/桌面快捷方式,用户点击快捷方式直接启动应用,无需手动执行
java -jar命令。
工具支持说明
你提到的Gradle、IntelliJ均支持这些官方工具:
- Gradle可通过
application插件+jlink插件配置打包流程,或直接用exec任务调用jpackage命令; - IntelliJ可直接配置运行
jlink/jpackage命令,或通过Maven/Gradle插件在IDE内完成全流程打包。
备选第三方方案
如果暂时不想使用官方工具,也可以选择Launch4j(生成内嵌JRE路径的原生exe)、Install4j(可视化配置打包MSI并内嵌JRE),但官方的jpackage是长期维护的标准方案,无需依赖第三方工具链。
内容的提问来源于stack exchange,提问作者Emily L.
相关产品推荐
相关产品推荐

