jdk11订制jre + JavaFX11打包exe可执行程序

jdk11订制jre + JavaFX11打包exe可执行程序

同样一步到位, 打包成为我们平时下载的exe安装包,在没有jdk的电脑上也可以直接安装运行。

使用之前创建的项目:

  • 使用 jdk11 + maven 开发 JavaFX
  • jdk11 + maven 打包JavaFX11
  • jdk11使用jlink定制精简jre

准备工具:

  1. 订制的jre
  2. exe4j
  3. Inno Setup Compiler

好像没法上传文件,可以加群(623110424)在群文件里面下载

其中exe4j负责将jar包转为exe文件,并链接外部jdk,需要将jdk和exe文件同时复制给别人,且jdk需要使用相对路径。别人可以直接运行软件,不需要安装。

inno setup compiler是将jdk和exe文件打包在一起,生成一个可以供别人安装的exe文件,也是我们平时遇到的大部分exe文件,用户可以选择安装路径,可以卸载。

首先使用我们之前创建的项目,打包一个可执行jar包,打包步骤在前面的文章。
jdk11订制jre + JavaFX11打包exe可执行程序_第1张图片

桌面新建一个文件夹,用来放置打包的jar包,和定制jre,比如这样:
jdk11订制jre + JavaFX11打包exe可执行程序_第2张图片
然后,打开exe4j:
jdk11订制jre + JavaFX11打包exe可执行程序_第3张图片
next,选择"JAR in EXE" mode:
jdk11订制jre + JavaFX11打包exe可执行程序_第4张图片
next,第一个为应用名,第二个为输出文件夹,选择我们刚建在桌面的文件夹就行:
jdk11订制jre + JavaFX11打包exe可执行程序_第5张图片
next,

  • 可执行名:程序名即可;
  • icon file是图标文件,需要的话可以设置,但是等会我们还会用inno setup设置图标,这里就不设置了;
  • Allow only a single running instance of the application:软件是否可以多开,勾选则不能多开,取消则可以多开;

其他默认,然后选择32-bit or 64-bit
jdk11订制jre + JavaFX11打包exe可执行程序_第6张图片
勾选 Generate 64-bit executable
jdk11订制jre + JavaFX11打包exe可执行程序_第7张图片
next,
jdk11订制jre + JavaFX11打包exe可执行程序_第8张图片
next,点击红框中的按钮,选择我们新建在桌面文件夹中的jar包
jdk11订制jre + JavaFX11打包exe可执行程序_第9张图片
jdk11订制jre + JavaFX11打包exe可执行程序_第10张图片
点击ok之后,
jdk11订制jre + JavaFX11打包exe可执行程序_第11张图片
在Main class from class path在输入框中输入程序启动类:我这里是xyz.yuelai.AppLauncher,如下所示:
jdk11订制jre + JavaFX11打包exe可执行程序_第12张图片
next,限定jre允许运行的最小最大版本,然后选择Search sequence:
jdk11订制jre + JavaFX11打包exe可执行程序_第13张图片
点击绿色的加号图标,选择Directory,找到jre的位置,选择jre:
jdk11订制jre + JavaFX11打包exe可执行程序_第14张图片
如果有JAVA_HOME环境变量,把他们删除,和我图中展示的一样即可。

next,选择Client hotspot VM:
jdk11订制jre + JavaFX11打包exe可执行程序_第15张图片
后面一直next,就会在新建在桌面的文件夹目录中生成一个exe文件:
jdk11订制jre + JavaFX11打包exe可执行程序_第16张图片
双击它就可以运行:
jdk11订制jre + JavaFX11打包exe可执行程序_第17张图片
从它的体积就可以看出来它没有包含jre,只是jar包封装了一下。要想让别人使用,还要把jre发给别人,并且保持相对路径不能变。比较麻烦,下面使用inno setup在封装一下,把jre和exe文件封装到一起。

打开inno setup
jdk11订制jre + JavaFX11打包exe可执行程序_第18张图片
next,程序名写好,版本号也可以写一下,剩下的随意

  • Application name:程序名
  • Application version:版本号
  • Application publisher:发布人
  • Application websit:网址
    jdk11订制jre + JavaFX11打包exe可执行程序_第19张图片
    next,默认即可:
    jdk11订制jre + JavaFX11打包exe可执行程序_第20张图片
    next,
    Application main executable file:选择我们刚刚使用exe4j生成的exe文件
    Other application files:选择jre
    jdk11订制jre + JavaFX11打包exe可执行程序_第21张图片
    一路next,到这个界面:
    jdk11订制jre + JavaFX11打包exe可执行程序_第22张图片
    Custom compiler output folder:打包后的exe文件输出路径,我直接建在了前面我们建在桌面的文件夹下面,取名为output,你自己随意,不影响

Copmiler output base file name:打包后的exe文件名

Custom Setup icon file:图标,需要的话,在这里选择一个图标文件。

后面一路next,然后弹窗看懂就好,看不懂就选是,保存一下脚本文件,开始编译,这是所有需要的和生成的文件:
jdk11订制jre + JavaFX11打包exe可执行程序_第23张图片
编译完成,在output文件夹下就可以看到打包好的安装包了:
jdk11订制jre + JavaFX11打包exe可执行程序_第24张图片
大小只有18.6MB,在现在动辄几个GB的安装包面前,可以说是极小了。

双击就可以像正常软件安装使用了:
jdk11订制jre + JavaFX11打包exe可执行程序_第25张图片
jdk11订制jre + JavaFX11打包exe可执行程序_第26张图片
jdk11订制jre + JavaFX11打包exe可执行程序_第27张图片
jdk11订制jre + JavaFX11打包exe可执行程序_第28张图片
但是当你运行时,应该是会报错的,即使不报错,你发给别人安装运行也是会报错的:
jdk11订制jre + JavaFX11打包exe可执行程序_第29张图片
因为我们在exe4j中设置的jre路径和exe文件是同级的,这样:
jdk11订制jre + JavaFX11打包exe可执行程序_第30张图片
而使用inno setup封装后,用户在安装解压后,路径变成了:
jdk11订制jre + JavaFX11打包exe可执行程序_第31张图片
exe文件找不到jre目录就会报错,解决办法很简单,修改一下我们在inno setup中生成的脚本文件即可。

找到[Files]下的jre路径设置,将DestDir的值设为"{app}\jre"即可。
本来是{app}的,和上面的exe输出路径一样。修改之后,jre就不会解压到exe同级目录下了,而是解压到exe同级目录jre中了。
jdk11订制jre + JavaFX11打包exe可执行程序_第32张图片
然后保存,重新编译,build -> compiler,编译完成生成新的exe文件。

重新安装一下,看看安装路径目录结构是不是像下面这样:
jdk11订制jre + JavaFX11打包exe可执行程序_第33张图片
如果是的话,那就没有问题了,打开你的软件吧!
jdk11订制jre + JavaFX11打包exe可执行程序_第34张图片
到此,使用JavaFX打包成exe可执行文件就完成了,你可以发给自己的小伙伴,看他是否能够运行,应该是Win7及以上版本的系统才支持。

欢迎对JavaFX感兴趣的小伙伴,可以加入群QQ623110424,共同学习,共同进步。

你可能感兴趣的:(javafx,javafx,exe)