intellij-idea 部署JavaFX应用程序、创建JAR和自包含应用程序以及本机安装程序的最佳方式是什么

yc0p9oo0  于 2022-11-01  发布在  Java
关注(0)|答案(3)|浏览(150)

我正在使用IntelliJ IDEA,我已经准备好部署JavaFX应用程序。问题是,当我生成JAR文件时,它不会运行,当我在命令行中运行它时,我得到一个异常,FXMLLoadException,尽管项目在我的IDE中运行得很好。
Ant任务以错误结束,经过15分钟的构建,我真的不明白到底出了什么问题。
因此,我的问题是什么是正确的步骤来部署JavaFX应用程序的正确方式,任何教程或指南都是受欢迎的。

s3fp2yjn

s3fp2yjn1#

一个Java应用程序可以用多种方式打包。请阅读Java打包概述来找到关于它的所有信息。其中一种打包方式是self-contained Java application
创建这些软件包的方法有很多种:

  • 使用JDK附带的javapackager工具
  • JavaFX Ant任务
  • 用于Maven项目的JavaFX Maven插件

自包含应用程序是打包应用程序的一种方式,并且是特定于平台的。该捆绑包包含:

  • 应用程序包
  • JRE的专用副本

可在此处找到可用软件包的列表。
让我们来看看我们可以使用的各种工具及其使用方法:

Java打包程序工具

JavaPackager工具是最基本的工具,可帮助您编译、打包、签名和部署Java(FX)应用程序,而无需编写任何额外的脚本。javapackager.jar文件位于JDK安装的bin目录中。
可以与它一起使用的命令列表是available here

JavaFX Ant任务

JavaFX Ant Tasks只需为项目创建一个build.xml文件,即可帮助您打包应用程序。
在这里可以找到一组关于如何在项目中使用ant脚本的示例。
此处提供了可与配合使用的命令列表。

JavaFX Maven插件

JavaFX Maven Plugin利用了将Java应用程序打包到Maven平台的用法。您可以使用它通过向项目添加插件来打包基于Maven的Java应用程序。
这个插件恕我直言,如果easiest使用出三个。这是一个写得非常好,易于理解的工具,并有广泛的文档。

JavaFX Gradle插件

JavaFX Gradle Plugin也是来自maven插件的作者。它具有maven插件的所有功能,但对于Gradle:)

进一步阅读:

gpfsuwkq

gpfsuwkq2#

Oracle在其网站上提供了有关JavaFX 2JavaFX 8打包的详尽指南。
如果您需要特定问题的帮助,请发布您所得到的错误的代码和堆栈跟踪。

ymdaylpp

ymdaylpp3#

如果您使用Maven,另一个非常聪明的方法是使用maven-shade-pluginlink)。它构建了一个包含所有依赖项的大jar,您可以在其中直接执行,而无需执行任何其他操作。您可以将其与javafx-maven-plugin结合使用。我也尝试了不同的方法,并试用了很长时间,此解决方案是唯一真正有效的解决方案。此外,它很容易设置。
下面是您必须添加到pom.xml中的内容:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.1.1</version>
            <configuration>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>your.package.name.Main</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>com.zenjava</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>8.8.3</version>
            <configuration>
                <mainClass>your.package.name.Main</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

mainClass中修改shade和javaFx插件的包名,就完成了。现在你可以像往常一样用mvn package构建你的应用程序。

相关问题