jdk11订制jre + JavaFX11打包exe可执行程序
同样一步到位, 打包成为我们平时下载的exe安装包,在没有jdk的电脑上也可以直接安装运行。
使用之前创建的项目:
准备工具:
- 订制的jre
- exe4j
- Inno Setup Compiler
好像没法上传文件,可以加群(623110424)在群文件里面下载
其中exe4j负责将jar包转为exe文件,并链接外部jdk,需要将jdk和exe文件同时复制给别人,且jdk需要使用相对路径。别人可以直接运行软件,不需要安装。
inno setup compiler是将jdk和exe文件打包在一起,生成一个可以供别人安装的exe文件,也是我们平时遇到的大部分exe文件,用户可以选择安装路径,可以卸载。
首先使用我们之前创建的项目,打包一个可执行jar包,打包步骤在前面的文章。
桌面新建一个文件夹,用来放置打包的jar包,和定制jre,比如这样:
然后,打开exe4j:
next,选择"JAR in EXE" mode:
next,第一个为应用名,第二个为输出文件夹,选择我们刚建在桌面的文件夹就行:
next,
- 可执行名:程序名即可;
- icon file是图标文件,需要的话可以设置,但是等会我们还会用inno setup设置图标,这里就不设置了;
- Allow only a single running instance of the application:软件是否可以多开,勾选则不能多开,取消则可以多开;
其他默认,然后选择32-bit or 64-bit
勾选 Generate 64-bit executable
next,
next,点击红框中的按钮,选择我们新建在桌面文件夹中的jar包
点击ok之后,
在Main class from class path在输入框中输入程序启动类:我这里是xyz.yuelai.AppLauncher
,如下所示:
next,限定jre允许运行的最小最大版本,然后选择Search sequence:
点击绿色的加号图标,选择Directory,找到jre的位置,选择jre:
如果有JAVA_HOME环境变量,把他们删除,和我图中展示的一样即可。
next,选择Client hotspot VM:
后面一直next,就会在新建在桌面的文件夹目录中生成一个exe文件:
双击它就可以运行:
从它的体积就可以看出来它没有包含jre,只是jar包封装了一下。要想让别人使用,还要把jre发给别人,并且保持相对路径不能变。比较麻烦,下面使用inno setup在封装一下,把jre和exe文件封装到一起。
打开inno setup
next,程序名写好,版本号也可以写一下,剩下的随意
- Application name:程序名
- Application version:版本号
- Application publisher:发布人
- Application websit:网址
next,默认即可:
next,
Application main executable file:选择我们刚刚使用exe4j生成的exe文件
Other application files:选择jre
一路next,到这个界面:
Custom compiler output folder:打包后的exe文件输出路径,我直接建在了前面我们建在桌面的文件夹下面,取名为output,你自己随意,不影响
Copmiler output base file name:打包后的exe文件名
Custom Setup icon file:图标,需要的话,在这里选择一个图标文件。
后面一路next,然后弹窗看懂就好,看不懂就选是,保存一下脚本文件,开始编译,这是所有需要的和生成的文件:
编译完成,在output文件夹下就可以看到打包好的安装包了:
大小只有18.6MB,在现在动辄几个GB的安装包面前,可以说是极小了。
双击就可以像正常软件安装使用了:
但是当你运行时,应该是会报错的,即使不报错,你发给别人安装运行也是会报错的:
因为我们在exe4j中设置的jre路径和exe文件是同级的,这样:
而使用inno setup封装后,用户在安装解压后,路径变成了:
exe文件找不到jre目录就会报错,解决办法很简单,修改一下我们在inno setup中生成的脚本文件即可。
找到[Files]下的jre路径设置,将DestDir的值设为"{app}\jre"
即可。
本来是{app}
的,和上面的exe输出路径一样。修改之后,jre就不会解压到exe同级目录下了,而是解压到exe同级目录jre中了。
然后保存,重新编译,build -> compiler,编译完成生成新的exe文件。
重新安装一下,看看安装路径目录结构是不是像下面这样:
如果是的话,那就没有问题了,打开你的软件吧!
到此,使用JavaFX打包成exe可执行文件就完成了,你可以发给自己的小伙伴,看他是否能够运行,应该是Win7及以上版本的系统才支持。
欢迎对JavaFX感兴趣的小伙伴,可以加入群QQ623110424,共同学习,共同进步。