如何在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就可以正常打开了,注意上一步不能省略。
相关推荐
virus594531 分钟前
悟空CRM mybatis-3.5.3-mapper.dtd错误解决方案
java·开发语言·mybatis
没差c2 小时前
springboot集成flyway
java·spring boot·后端
时艰.2 小时前
Java 并发编程之 CAS 与 Atomic 原子操作类
java·开发语言
编程彩机2 小时前
互联网大厂Java面试:从Java SE到大数据场景的技术深度解析
java·大数据·spring boot·面试·spark·java se·互联网大厂
笨蛋不要掉眼泪2 小时前
Spring Boot集成LangChain4j:与大模型对话的极速入门
java·人工智能·后端·spring·langchain
Yvonne爱编码3 小时前
JAVA数据结构 DAY3-List接口
java·开发语言·windows·python
南宫码农3 小时前
我的电视 - Android原生电视直播软件 完整使用教程
android·开发语言·windows·电视盒子
像少年啦飞驰点、4 小时前
零基础入门 Spring Boot:从“Hello World”到可上线微服务的完整学习指南
java·spring boot·微服务·编程入门·后端开发
眼眸流转4 小时前
Java代码变更影响分析(一)
java·开发语言
Yvonne爱编码4 小时前
JAVA数据结构 DAY4-ArrayList
java·开发语言·数据结构