如何在IDEA中将JavaFX项目打包EXE文件


### 文章目录

  • [@[TOC](文章目录)](#文章目录 @TOC 一、准备项目 1. 必备工具与软件 JavaFX SDK 11.0.2 ‌Launch4j‌ openjdk-24.0.2+12-54 生成的jar包 2. pom.xml配置 二、手动转换 1、转换前配置 launch4j配置 2、将jar转换成exe 三、测试)
  • [一、准备项目](#文章目录 @TOC 一、准备项目 1. 必备工具与软件 JavaFX SDK 11.0.2 ‌Launch4j‌ openjdk-24.0.2+12-54 生成的jar包 2. pom.xml配置 二、手动转换 1、转换前配置 launch4j配置 2、将jar转换成exe 三、测试)
  • [1. 必备工具与软件](#文章目录 @TOC 一、准备项目 1. 必备工具与软件 JavaFX SDK 11.0.2 ‌Launch4j‌ openjdk-24.0.2+12-54 生成的jar包 2. pom.xml配置 二、手动转换 1、转换前配置 launch4j配置 2、将jar转换成exe 三、测试)
  • [JavaFX SDK 11.0.2](#文章目录 @TOC 一、准备项目 1. 必备工具与软件 JavaFX SDK 11.0.2 ‌Launch4j‌ openjdk-24.0.2+12-54 生成的jar包 2. pom.xml配置 二、手动转换 1、转换前配置 launch4j配置 2、将jar转换成exe 三、测试)
  • [‌Launch4j‌](#文章目录 @TOC 一、准备项目 1. 必备工具与软件 JavaFX SDK 11.0.2 ‌Launch4j‌ openjdk-24.0.2+12-54 生成的jar包 2. pom.xml配置 二、手动转换 1、转换前配置 launch4j配置 2、将jar转换成exe 三、测试)
  • [openjdk-24.0.2+12-54](#文章目录 @TOC 一、准备项目 1. 必备工具与软件 JavaFX SDK 11.0.2 ‌Launch4j‌ openjdk-24.0.2+12-54 生成的jar包 2. pom.xml配置 二、手动转换 1、转换前配置 launch4j配置 2、将jar转换成exe 三、测试)
  • [生成的jar包](#文章目录 @TOC 一、准备项目 1. 必备工具与软件 JavaFX SDK 11.0.2 ‌Launch4j‌ openjdk-24.0.2+12-54 生成的jar包 2. pom.xml配置 二、手动转换 1、转换前配置 launch4j配置 2、将jar转换成exe 三、测试)
  • [2. pom.xml配置](#文章目录 @TOC 一、准备项目 1. 必备工具与软件 JavaFX SDK 11.0.2 ‌Launch4j‌ openjdk-24.0.2+12-54 生成的jar包 2. pom.xml配置 二、手动转换 1、转换前配置 launch4j配置 2、将jar转换成exe 三、测试)
  • [二、手动转换](#文章目录 @TOC 一、准备项目 1. 必备工具与软件 JavaFX SDK 11.0.2 ‌Launch4j‌ openjdk-24.0.2+12-54 生成的jar包 2. pom.xml配置 二、手动转换 1、转换前配置 launch4j配置 2、将jar转换成exe 三、测试)
  • [1、转换前配置](#文章目录 @TOC 一、准备项目 1. 必备工具与软件 JavaFX SDK 11.0.2 ‌Launch4j‌ openjdk-24.0.2+12-54 生成的jar包 2. pom.xml配置 二、手动转换 1、转换前配置 launch4j配置 2、将jar转换成exe 三、测试)
  • [launch4j配置](#文章目录 @TOC 一、准备项目 1. 必备工具与软件 JavaFX SDK 11.0.2 ‌Launch4j‌ openjdk-24.0.2+12-54 生成的jar包 2. pom.xml配置 二、手动转换 1、转换前配置 launch4j配置 2、将jar转换成exe 三、测试)
  • [2、将jar转换成exe](#文章目录 @TOC 一、准备项目 1. 必备工具与软件 JavaFX SDK 11.0.2 ‌Launch4j‌ openjdk-24.0.2+12-54 生成的jar包 2. pom.xml配置 二、手动转换 1、转换前配置 launch4j配置 2、将jar转换成exe 三、测试)
  • [三、测试](#文章目录 @TOC 一、准备项目 1. 必备工具与软件 JavaFX SDK 11.0.2 ‌Launch4j‌ openjdk-24.0.2+12-54 生成的jar包 2. pom.xml配置 二、手动转换 1、转换前配置 launch4j配置 2、将jar转换成exe 三、测试)

一、准备项目

1. 必备工具与软件

JavaFX SDK 11.0.2

  • 11.0.2 是一个具体的版本,你当然可以使用其它的版本,但要注意与其它组件的兼容性。JavaFX SDK 11.0.2是一个用于开发JavaFX应用程序的工具包,适用于Java 11及更高版本。是一个独立模块化组件,需要单独下载和配置才能使用。‌

  • 在 Windows 上,解压后直接访问 lib 目录即可使用库文件。如下图中为JavaFX SDK 11.0.2主目录下资源。

‌Launch4j‌

  • Launch4j‌是一个用于将 Java 应用程序打包成独立的 Windows 原生可执行文件(.exe)的开源工具,从而实现跨平台部署。

openjdk-24.0.2+12-54

  • ‌OpenJDK是Java平台的开源开发工具包‌,也是你的java项目运行环境。

生成的jar包

2. pom.xml配置

  • ‌pom.xml 是 Maven 项目的核心配置文件‌,采用 XML 格式定义项目元数据、依赖关系和构建规则,用于自动化 Java项目的构建、依赖管理和打包。‌‌
    不同的项目,pom.xml是不同的,这里只是本文测试项目所用的pom.xml,供参考。

    <?xml version="1.0" encoding="UTF-8"?>

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>lotteryfx</groupId>
    <artifactId>Lottery</artifactId>
    <version>1.0</version>
    <name>Lottery</name>
    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <junit.version>5.10.2</junit.version> </properties>

    复制代码
    <dependencies>
      <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
      </dependency>
      <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>17.0.6</version>
      </dependency>
      <dependency>
        <groupId>org.controlsfx</groupId>
        <artifactId>controlsfx</artifactId>
        <version>11.2.1</version>
      </dependency>
      <dependency>
        <groupId>com.dlsc.formsfx</groupId>
        <artifactId>formsfx-core</artifactId>
        <version>11.6.0</version>
        <exclusions>
          <exclusion>
            <groupId>org.openjfx</groupId>
            <artifactId>*</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>net.synedra</groupId>
        <artifactId>validatorfx</artifactId>
        <version>0.5.0</version>
        <exclusions>
          <exclusion>
            <groupId>org.openjfx</groupId>
            <artifactId>*</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.kordamp.ikonli</groupId>
        <artifactId>ikonli-javafx</artifactId>
        <version>12.3.1</version>
      </dependency>
      <dependency>
      <groupId>org.kordamp.bootstrapfx</groupId>
      <artifactId>bootstrapfx-core</artifactId>
      <version>0.4.0</version>
    </dependency>
      <dependency>
      <groupId>eu.hansolo</groupId>
      <artifactId>tilesfx</artifactId>
      <version>21.0.3</version>
      <exclusions>
        <exclusion>
          <groupId>org.openjfx</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.17.1</version>
      </dependency>
      <!-- SLF4J API -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.30</version>
      </dependency>
    </dependencies>
    
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.13.0</version>
          <configuration>
            <source>24</source>
            <target>24</target>
          </configuration>
        </plugin>
      </plugins>
    </build>
    </project>

二、手动转换

1、转换前配置

  • 当上述介绍的工具与软件准备齐全后,就可以进入转换环节了,首先是软件配置。

launch4j配置

打开launch4j目录,打开目录下的launch4j.exe文件。如下图。

  • 打开launch4j.exe后的几个关键配置步骤。
  • basic选项卡下的Output file中选择你要生成的exe文件名及路径。
  • basic选项卡下的jar中选择你的jar包。
  • basic选项卡下的Icon中选择你要生成的exe文件的显示图标,这里是可选项,不选择任何文件不会影响转换。
  • Header选项卡下的Header type中选择GUI项。

  • JRE选项卡下的JRE paths下填入你的openjdk主目录下的bin路径。 注意这里的"./"表示当前路径。

  • -JRE选项卡下的JVM options下填入如下内容。 注意这里的"."表示当前路径。javafx-sdk-11-0-2\根据你的时间路径与版本填写。

    module-path ".\javafx-sdk-11-0-2\lib" --add-modules javafx.controls,javafx.fxml

  • launch4j中的其它选项可选择默认

2、将jar转换成exe

上述配置完成后,点击下图中的图标。

弹出保存配置文件的图标,这个xml的配置文件保存后,下一次可直接打开使用,不需要在重新配置。

  • 点击保存后,launch4j会自动将jar包转换成exe文件,这时候,你的目标文件夹中,会生成一个新的exe文件

三、测试

  • 将新生成的exe文件同上述openjdk-24.0.2+12-54,JavaFX SDK 11.0.2放在同一个文件夹下,这是关键步骤
  • 这样,在没有安装java环境的系统中,你生成的exe就可以正常打开了,注意上一步不能省略。
相关推荐
孟陬2 小时前
国外技术周刊 #1:Paul Graham 重新分享最受欢迎的文章《创作者的品味》、本周被划线最多 YouTube《如何在 19 分钟内学会 AI》、为何我不
java·前端·后端
想用offer打牌2 小时前
一站式了解四种限流算法
java·后端·go
华仔啊2 小时前
Java 开发千万别给布尔变量加 is 前缀!很容易背锅
java
也些宝3 小时前
Java单例模式:饿汉、懒汉、DCL三种实现及最佳实践
java
Nyarlathotep01134 小时前
SpringBoot Starter的用法以及原理
java·spring boot
wuwen54 小时前
WebFlux + Lettuce Reactive 中 SkyWalking 链路上下文丢失的修复实践
java
SimonKing4 小时前
GitHub 10万星的OpenCode,正在悄悄改变我们的工作流
java·后端·程序员
Seven975 小时前
虚拟线程深度解析:轻量并发编程的未来趋势
java
雨中飘荡的记忆15 小时前
ElasticJob分布式调度从入门到实战
java·后端