前言
最近尝试了一下用 JavaFX
技术来写一个客户端,希望最终打包成出可以放在其他不含 JRE
的电脑上的 exe
文件。因为关于 JavaFX
的资料比较少,而且多数打包资料的最终形式是 jar
,花了不少精力翻相关项目GitHub,CSDN、Stack Overflow等问答社区,在此整理记录。
环境准备
安装Maven插件
用到了javafx-maven-plugin这个插件:https://github.com/javafx-maven-plugin/javafx-maven-plugin
Maven仓库链接:https://mvnrepository.com/artifact/com.zenjava/javafx-maven-plugin
下面为我的 pom.xml
中的相关内容。
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>8.8.3</version>
<configuration>
<mainClass>com.starrysky.UI</mainClass>
<appName>CAT</appName>
<vendor>Starrysky</vendor>
<additionalAppResources>./src/main/resources</additionalAppResources>
</configuration>
</plugin>
安装Inno Setup 5
根据插件作者的描述,打包成 exe
文件,需要安装Inno Setup。官网:https://jrsoftware.org/isinfo.php
一定要安装版本5.0的,不要安装版本6.0的。下载链接:https://files.jrsoftware.org/is/5/
安装时选择默认路径。
安装JDK1.8(含JavaFX)
我一开始用的是OpenJDK FX11,然后根据插件打包时的报错信息,需要用到 javapackager
,这个在JDK11中已经被移除了,所以我换回JDK8,解决了这个问题。
OpenJDK8下载(含JavaFX):https://www.azul.com/downloads/zulu-community/?package=jdk
打包
执行以下命令删除旧文件并根据当前操作系统打包。
mvn clean jfx:native
在项目的 target/jfx/native/appName
目录下生成了 .exe
及配套的运行环境,可以在其他的电脑上部署。
参考链接
https://github.com/javafx-maven-plugin/javafx-maven-plugin
https://mvnrepository.com/artifact/com.zenjava/javafx-maven-plugin/8.8.3
https://blog.csdn.net/liumiaocn/article/details/89785875
https://blog.csdn.net/qq_27503061/article/details/90612455
https://lhalcyon.com/javafx-project-artifacts/