如何使用 JavaFX 11(模块化)创建独立应用程序? [复制]

Posted

技术标签:

【中文标题】如何使用 JavaFX 11(模块化)创建独立应用程序? [复制]【英文标题】:How to create a standalone application using JavaFX 11 (Modular)? [duplicate] 【发布时间】:2019-08-07 08:26:35 【问题描述】:

我正在学习here 教程并使用openjdk 11.0.2javafx-sdk-11.0.2。 我已经在 Eclipse 中导入了 maven 项目。该项目实际上可以很好地编译和打包。它还在 /target 目录中创建了 jar 文件。 问题是,我想为我的应用程序导出一个单个可执行文件,该应用程序本身也嵌入了必要的 JRE(因此不需要在目标机器)。 这是实际的project。

如何在 Maven 中自动生成独立可执行文件?如果可能的话,我想要一个 exe。

【问题讨论】:

你看过How to deploy a JavaFX 11 Desktop application with a JRE吗? @SamuelPhilipp 看来我需要的工具是 javapackager 但它已从 JDK 11 中删除,现在它已在实验中发布 或者查看安装程序生成器,创建 setup.exe 等。迁移到 Java 17 也很容易。 【参考方案1】:

在 SO 上学习 other questions here,我认为没有办法生成包含 JRE 的单个 EXE。但是,所提到的工具可以生成一个可以放在旁边“jre”目录的 EXE。

使用JavaPackager Maven 插件,这实际上可以很容易地实现,只需在您的 POM 中添加以下内容:

<plugin>
    <groupId>io.github.fvarrui</groupId>
    <artifactId>javapackager</artifactId>
    <version>1.6.2</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>package</goal>
            </goals>
            <configuration>
                <mainClass>...</mainClass>
                <bundleJre>true</bundleJre>
                <platform>windows</platform>
            </configuration>
        </execution>
    </executions>
</plugin>

运行mvn package 将在“target”内生成一个包含 EXE 的目录、一个“jre”目录和一个“libs”目录。该插件还可以生成安装程序文件。

显然,对于不同的平台,您需要调整配置,但我在 Windows 上使用 JDK 16 和 17 进行了测试,它似乎工作正常。

【讨论】:

如果您真的想创建一个独立的 EXE,可以使用 Gluons 工具链来完成。 docs.gluonhq.com/#platforms_windows @mipa gluons 插件可以用于在 windows 中制作 JavaFX 应用程序的可安装版本吗? (如 JPackage) 不,它只是创建 EXE,但我认为您可以使用其他工具创建安装程序。我对 Windows 不是很熟悉。

以上是关于如何使用 JavaFX 11(模块化)创建独立应用程序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 IntelliJ IDEA 中创建 JavaFX 模块

运行 JavaFx 媒体应用程序时出现模块错误

JavaFX应用程序无法启动(MacOS使用JDK11)

打包非模块化 JavaFX 应用程序

JDK11即将来临,新特性了解一下

打包JavaFX11桌面应用程序