JavaFX + JDK17 打包exe的方法

打包环境

  • Spring Boot2.0+

  • JavaFX

  • Maven

  • Windows

  • JDK17

需求场景

  • 将项目打包成可执行的exe文件

  • 项目实现远端版本控制和版本在线更新

  • 项目资源变动,例如:pom文件变动时,客户端可更新运行环境

插件|工具介绍

Java Package (JAR):

JAR文件是Java平台的标准打包格式,它将所有相关的类、资源文件和库文件打包到一个可执行的归档文件中。JAR文件可以使用Java开发工具(如javac和jar)进行创建和打包。

步骤:

  • 将Java源代码编译为字节码文件(.class文件)。

  • 将字节码文件和资源文件放置在一个目录结构中。

  • 使用jar命令将目录打包成JAR文件。

优势:

  • 简单易用,是Java开发的标准打包格式。

  • 跨平台性,可以在任何支持Java的操作系统上运行。

劣势:

  • JAR文件需要Java运行时环境(JRE)来执行。

  • 对于复杂的应用程序,需要手动处理依赖关系和类路径设置。

exe4j:

exe4j是一个第三方工具,用于将Java应用程序打包成可执行的Windows可执行文件(.exe)。它提供了一个图形化界面,使得打包过程更加简单。

步骤:

  • 使用exe4j工具打开Java应用程序项目。

  • 配置项目的属性,包括主类、类路径和其他选项。

  • 构建可执行文件,并将Java运行时环境(JRE)嵌入到可执行文件中。

优势:

  • 生成独立的可执行文件,不需要单独安装Java运行时环境。

  • 可以配置自定义的应用程序图标和版本信息。

劣势:

  • 仅适用于Windows操作系统。

  • 需要额外的第三方工具,并且是商业软件。

GraalVM:

GraalVM是一个开源的通用虚拟机,支持多种编程语言,包括Java。它提供了AOT(Ahead-of-Time)编译器,可以将Java应用程序编译成本地可执行文件。

步骤:

  • 使用GraalVM提供的AOT编译器将Java应用程序编译成本地可执行文件。

  • 指定应用程序的入口点和依赖项。

优势:

  • 生成本地可执行文件,无需依赖Java运行时环境。

  • 可以获得更好的性能和启动时间。

劣势:

  • 需要安装和配置GraalVM。

  • 目前的AOT编译器对于所有的Java代码都不一定完全兼容。

jpackage:

jpackage是Java 14及更高版本中引入的官方工具,用于将Java应用程序打包成可执行文件或安装程序。它可以生成适用于不同操作系统的安装程序。

步骤:

  • 使用jpackage命令指定应用程序的相关选项,如入口类、依赖项和运行时镜像。

  • 执行jpackage命令生成可执行文件或安装程序。

优势:

  • 官方支持,无需额外安装和配置。

  • 支持生成针对不同操作系统的安装程序。

劣势:

  • 仅适用于Java 14及更高版本。

  • 某些高级功能可能不支持或不完善。

比较

  • Java Package:依赖JRE和Libs(jar集合)环境运行,对于具有大量依赖的复杂项目,手动管理JAR文件的依赖关系和类路径设置可能会变得复杂和困难。无法支持程序更新时变更环境。

  • exe4j:exe4j是一个Windows平台特定的工具,因此仅适用于Windows操作系统。如果你的应用程序需要在其他操作系统上运行,你需要另外寻找其他工具或解决方案。exe4j本身并不提供Java运行时环境(JRE),因此你需要先确保在打包应用程序之前已经正确安装了jdk17。

  • GraalVM:GraalVM需要单独的安装和配置过程。这可能对开发人员和部署过程带来额外的复杂性和工作量。GraalVM是AOT编译器,不支持反射技术,针对使用了反射的类需要特殊标记,在Spring框架中,反射被广泛使用,标记反射过于繁琐,也有可能出现依赖丢失环境不兼容等情况。

  • jpackage:由于Spring Boot 2.x是构建在Java平台上的,因此使用jpackage可以很好地与Spring Boot项目集成,同时也可以包含JavaFX界面。JDK 17为了更好地支持JavaFX,将JavaFX模块纳入了JDK中。使用jpackage进行打包时,你可以指定应用程序的相关选项,例如入口类、依赖项和运行时镜像。通过执行jpackage命令,你可以生成适用于不同操作系统的可执行文件或安装程序。

下面将详细介绍jpackage

jpackage使用

1、引入相关插件

2、执行mvn package 命令打包

  1. 执行打包结束后,target文件夹下会生成lib文件夹,该文件夹存放有该项目所有的jar包

  2. target文件夹下会生成一个本项目的XXX.jar包,将该jar包复制到lib文件夹中,并将需要用到的图标一并复制到lib文件夹中

3、JPackage打包指令介绍

使用Jpackage指令但未安装WiX时的提示:

WiX.exe

安装WiX.exe之前需要先安装".Net Framework 3.5.1"

WiX.exe的下载地址:WiX v3 | WiX Toolset

它的默认安装位置:C:\Program Files (x86)\WiX Toolset v3.11

配置环境变量:在Path中增加C:\Program Files (x86)\WiX Toolset v3.11\bin;。

.Net Framework 3.5.1安装步骤:

1、在Windows控制面板的程序和功能中点击启用和关闭Windows功能;

2、勾选.Net Framework 3.5.1(包括 .Net 2.0 和 3.0),点击确定,再点击同意下载;

3、等待自动下载并安装完成;

4、最后重新启动计算机。

打包指令

下述的中括号[]的内容表示要依据实际情况填写的参数:

  1. 生成运行程序:

  2. 生成安装程序:

    1、完成步骤1即生成了可执行exe。

    2、步骤1中的[可执行Jar包]参数直接写"文件名.jar"即可,不需要写路径,但该Jar包必须存在于[Jar包所在文件夹]中。

    3、步骤1中的--runtime-image [Jre文件夹]是选填,可以去掉。若去掉,则运行EXE的电脑上必须有JAVA环境并且配置了环境变量。 [Jre文件夹]可以填写安装java时的Jre环境的目录,或自己精简后的Jre环境的目录。

    4、步骤2中的[运行程序的文件夹]是步骤1中的[输出目录]。

JPackage 指令含义:

查看帮助:jpackage -h (以下内容出于Windows平台下Java17版本。用有道和自己的一点理解翻译的,可能不准,仅作参考)

4、打包实践

完成1、2步骤后 在lib文件夹下打开终端 如下图:

执行命令

命令执行完成后,E:\Aisino_Project\zhsq-ebot\out-exe 包下会出现一个E-BOT-1.0.6-1.0.6 的安装包,双击后即可安装程序

此命令会将程序默认安装到C:\Program Files\下 ,可以通过--install-dir覆盖此路径,当前需求无需此操作

注意事项

  • 需将所有需要的jar和其他文件统一放入同一个文件夹下

  • 为实现机器人自动安装更新操作,需抑制(你要允许来自未知发布者的此应用对你的设备 进行更改吗?)此弹窗。可参考https://blog.csdn.net/weixin_44056757/article/details/105611122解决该问题

  • 版本号不能省略,名称上的版本号依旧不能省略,因为他们是标志程序的标识,如果省略更新时可能会冲突或者覆盖。

在JDK 17中,可以使用JavaFX打包可执行文件(exe)。下面是打包exe的步骤: 1. 配置JDK 17:确保你的系统中已经正确安装了JDK 17,并且配置了系统变量。 2. 配置JavaFX:在JDK 17中,JavaFX已经被移除,需要单独下载并配置。你可以从OpenJFX官方网站下载JavaFX,并将其解压到一个目录中。 3. 配置项目:在你的项目中,确保已经正确配置了JavaFX的依赖项。这可以通过在项目的构建文件(如pom.xml或build.gradle)中添加相应的依赖项来实现。 4. 打包jar文件:使用构建工具(如Maven或Gradle)将你的项目打包成一个可执行的jar文件。你可以使用以下命令来执行打包操作: - Maven:`mvn clean package` - Gradle:`gradle clean build` 5. 打包exe文件:使用第三方工具(如Launch4j或JPackage)将jar文件打包exe文件。这些工具可以将jar文件与Java运行时环境(JRE)捆绑在一起,以便在没有安装JRE的计算机上运行。以下是使用Launch4j和JPackage的示例: - 使用Launch4j: - 下载并安装Launch4j。 - 打开Launch4j,并配置以下参数: - Output file:指定生成的exe文件的输出路径和名称。 - Jar:选择你之前打包的jar文件。 - JRE:选择你想要捆绑的JRE版本。 - 保存配置并点击“Build”。 - 使用JPackage: - 打开命令行终端,并导航到你的项目目录。 - 运行以下命令: ```shell jpackage --input <path_to_jar_file> --main-jar <main_class> --output <output_directory> --name <app_name> --win-shortcut --win-menu --win-dir-chooser ``` 其中: - `<path_to_jar_file>`:你之前打包的jar文件的路径。 - `<main_class>`:你的应用程序的主类。 - `<output_directory>`:生成的exe文件的输出目录。 - `<app_name>`:生成的exe文件的名称。 请注意,以上步骤中的参数和工具选择可能因你的具体需求而有所不同。你可以根据自己的情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值