JavaFX 是一个开源的下一代客户端应用平台,适用于基于Java构建的桌面、移动端和嵌入式系统。 它是许多个人和公司的共同努力的成果,目的是为开发丰富的客户端应用提供一个现代、高效、功能齐全的工具包。官方文档: https://openjfx.io/openjfx-docs/#introduction 。
而我最近使用JavaFx搞了一个小工具,主要是对局域网内其他设备的搜寻和展示,目前已开源在gitee。
重点:本文将介绍如何将JavaFx工程打包为.exe文件。如果是jdk14以下打包exe请参考使用exe4j进行打包。
exe4j打包jar请参考: https://zhuanlan.zhihu.com/p/517738168?utm_id=0
首先使用idea新建一个javafx的项目,填写好相关信息
接着下一步到选择GUI控件步骤
随后点击CREATE创建,就可以编写自己的代码了。构建图形GUI这里推荐使用Scene Builder,可直接拖拽UI库中的组件进行页面的构建,有兴趣的可以自行百度一下安装
可以看到的是idea给我们自动添加好了打包的插件,方便后续打包
假设这里你的程序已经编写完成并且本地测试没问题后,我们点击右侧栏的Maven菜单->Plugins->javafx->javafx:jlink
打包好后会在target里生成一个app.bat批处理文件,路径target/app/bin/app.bat。可以直接双击运行
这还不够,本文是要将这个app.bat打包为.exe,这里使用jpackage进行打包(注意:jpackage 是在jdk14正式引入的打包工具)
首先使用cmd到达项目的根目录,也就是target所在的根目录,随后执行以下命令:
jpackage --name LANGadget --type app-image -m com.lan.findlandev/com.lan.findlandev.LANApplication --runtime-image .\target\app\ --icon C:\Users\devse\Downloads\LANGadget.ico
按回车执行
随后就会生成LANGadget目录,目录下就会有这个exe了,注意:LANGadget.exe不可单独拿出来运行,这里其实是基本把整个jre打包进来了,在runtime目录下,由于我们是JavaFx程序,必须依赖jvm运行。
到这里其实已经完成整个打包流程了,将以上LANGadget目录压缩成一个zip即可做成绿色版。如若想做成可安装的程序的话,请看下一步骤
第一步:到官网下载innosetup-6.2.2.exe并安装
注意:innosetup默认的是英文安装,简体中文安装需要自己去官网下载中文语言包,具体方法如下:
1,到 https://jrsoftware.org/files/istrans/ 找到translations,点击然后下拉找到简体中文语言包Chinese (Simplified)。
我们将这些脚本代码复制下来,创建一个ChineseSimplified.isl文件,把脚本代码放进去
2,找到Inno Setup安装文件,进入Languages子文件夹,将刚刚的ChineseSimplified.isl文件复制进去(注意要把编码格式设为UTF-8或者UTF-8-BOM),然后到以下打包步骤的第八步中设置安装的语言就可以选择简体中文了。
第二步:打开安装好的 Inno Setup Compiler 点击File->New,点击Next,如下图:
第三步:设置应用程序名称和版本号后点击Next(注意是必填)
第四步:设置文件夹名称,一般保留默认就行,然后继续Next
第五步:设置exe主文件所在的目录,我们选择刚刚用jpackage打包好的exe和依赖文件,然后Next
第六步:继续点击Next
第七步:这里是填写一些许可文件之类的,直接留空,然后一直点Next
第七步:点Next
第八步:设置安装的语言,这里把简体中文勾上
第九步:设置安装包基本信息,设置好后点击Next,一直到Finish
第十步:到最后会弹出一个窗口告诉你是否立即执行脚本?一直点击“是”
第十一步:提示让我们保存这个 .iss 文件以便下次可直接执行
随后执行脚本产生如图:
即可在刚刚安装包输出的路径中看到我们的exe安装包了
到这里我们整个打包exe流程就结束啦!!!