我正在使用 IntelliJ IDEA,已经准备好将我的 JavaFX 应用程序部署。问题是,当我生成 JAR 文件时,它无法运行。在命令行中运行时,会出现异常 FXMLLoadException,尽管该项目在我的 IDE 中完美运行。
Ant 任务以错误结束,在构建 15 分钟后,我真的不明白到底出了什么问题。
所以我的问题是,如何正确地部署 JavaFX 应用程序,任何教程或指南都会受到欢迎。
我正在使用 IntelliJ IDEA,已经准备好将我的 JavaFX 应用程序部署。问题是,当我生成 JAR 文件时,它无法运行。在命令行中运行时,会出现异常 FXMLLoadException,尽管该项目在我的 IDE 中完美运行。
Ant 任务以错误结束,在构建 15 分钟后,我真的不明白到底出了什么问题。
所以我的问题是,如何正确地部署 JavaFX 应用程序,任何教程或指南都会受到欢迎。
自包含的Java应用程序
。javapackager
工具JavaPackager工具是最基本的工具,帮助您编译、打包、签名和部署Java(FX)应用程序,无需编写任何额外的脚本。 javapackager.jar
文件位于JDK安装的bin目录中。
可以使用的命令列表在此处提供。
JavaFX Ant任务
JavaFX Ant任务通过为您的项目创建build.xml
文件来帮助您打包应用程序。
有关如何使用Ant脚本的一组示例可以在此处找到。
可以使用的命令列表在这里提供。
JavaFX Maven Plugin
JavaFX Maven Plugin 利用了将 Java 应用程序打包到 Maven 平台的方式。您可以通过向项目添加插件来使用它来打包基于 Maven 的 Java 应用程序。
我认为,这个插件是三个插件中最易于使用
的。它是一个非常好的编写、易于理解的工具,并且有广泛的文档。
JavaFX Gradle Plugin
JavaFX Gradle Plugin 也是由 Maven 插件的作者开发的。它具有 Maven 插件所有的功能,但适用于 Gradle :)
进一步阅读:
maven-shade-plugin
(link)。它会构建一个包含所有依赖项的大而全的jar文件,您可以直接执行它,无需进行任何其他操作。您可以与javafx-maven-plugin
结合使用。我也尝试了不同的方法并玩了很长时间,这个解决方案是唯一真正有效的解决方案。此外,它很容易设置。<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
中的软件包名称,然后您就完成了。现在,您可以像往常一样使用mvn package
构建应用程序。
FXMLLoadException
听起来像是你的.fxml
文件没有包含在你的.jar
中。你可以尝试解压缩这个jar(unzip jarfile.jar
)并搜索你的.fxml
文件。无论如何,我正在使用Travis CI的gradle,并且它允许部署到许多不同的部署提供商。 - michaeln