JavaFX应用程序打包

Java开发过程中存在一个难题:分发自己的程序,需要客户电脑中已安装jre环境。如果用户在系统中没有要求的Java版本,则必须安装它。JavaFX提供新的部署选项称为自包含应用程序包(A self-contained application)。

A self-contained application is a wrapper for your JavaFX application, making it independent of what the user might have installed.

一个自包含应用包是一个包含Java应用和它的依赖的包,它使得应用可独立于用户可能安装的内容。

 

本文主要介绍如何使用IDEA打包,以及在打包过程中遇到的各种坑。我们可以直接将 java 程序打包成安装包,具体来说:

l  Windows:exe,msi

l  Mac:dmg,pkg

l  Linux:deb,rpm

一、使用IDEA Artifact打包exe

1、添加Artifacts

“File Structure”—“Artifacts”,点击“+”添加“JavaFx application”—“From Module XXX”。

2、添加依赖

   将右边模块及其依赖的底层模块下的jar包添加到左边(Put Into Output Root)

   将右边依赖的底层模块打包到右边(Pack Into /xxx.jar)。

3、配置JavaFX打包信息

         Application class中添加项目的启动类,将Native bundle设为all或image。

    其他信息可不填:

    Title:应用标题

    Vendor:应用作者

4、构建Artifacts。

  输出目录:out\artifacts\client\bundles\client

注意事项

1、  所有依赖项必须全部添加到左边,否则exe将无法执行。此时需

2、  JavaFX打包信息中不可以使用中文,否则构建会报错。

3、  IDEA Artifacts虽然可以打包各个系统的执行程序,但是在一个系统上只能打队友系统的安装包。比如在windows上,就只能打包成exe。

二、为JavaFX应用创建安装程序

1、首先需要下载两个工具

  • exe4j,一个将jar转换成exe的工具
  • inno setup,一个将依赖和exe一起打成一个安装程序的工具

2、maven把Springboot项打包

可以再IDEA的Terminal中直接输入命令或者用IDEA右侧的Maven工具。

3、打包成exe

先把exe4j.rar解压,根据自己系统版本运行安装程序,直接下一步到底,安装后运行。

设置执行权限和缩放

使用inno setup创建一个打包脚本。配置到最后一步会弹出问你是否马上编译,选择否,先把脚本写好再自己编译。

在下图位置加一行代码  #define MyJreName "runtime" 

 在[Files]下加一行代码

 Source: "自己本地JRE路径\*"; DestDir: "{app}\{#MyJreName}"; Flags: ignoreversion recursesubdirs createallsubdirs 

注意事项

1、  创建setup时打包的jre路径应该与打包成exe时自定义的jre路径保持一致,比如上图中的“runtime”。否则,安装后的exe程序会报错。

2、  在JVM启动参数上加上 -Dfile.encoding=UTF-8,强行设置系统文件编码格式为utf-8。

 

测试运行

使用VMware虚拟机

参考资料

记录一次Springboot项目打包成exe 

 

其他打包参考如下资料:

第七部分:部署   你如何使用Eclipse和e(fx)clipse插件创建本地包

 

IDEA打包

记录一次Springboot项目打包成exe 

将idea中的JavaFX项目打包成可执行的exe应用

posted @ 2022-04-11 15:22  十二楼C  阅读(1708)  评论(1编辑  收藏  举报