打包环境
-
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 命令打包
-
执行打包结束后,target文件夹下会生成lib文件夹,该文件夹存放有该项目所有的jar包
-
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、完成步骤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解决该问题
-

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

被折叠的 条评论
为什么被折叠?



