前言

最近尝试了一下用 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 中的相关内容。

  1. <plugin>
  2. <groupId>com.zenjava</groupId>
  3. <artifactId>javafx-maven-plugin</artifactId>
  4. <version>8.8.3</version>
  5. <configuration>
  6. <mainClass>com.starrysky.UI</mainClass>
  7. <appName>CAT</appName>
  8. <vendor>Starrysky</vendor>
  9. <additionalAppResources>./src/main/resources</additionalAppResources>
  10. </configuration>
  11. </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

打包

执行以下命令删除旧文件并根据当前操作系统打包。

  1. 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/