簡體   English   中英

部署 JavaFX 應用程序、創建 JAR 和自包含應用程序以及本機安裝程序的最佳方式是什么

[英]What is the best way to deploy JavaFX application, create JAR and self-contained applications and native installers

我正在使用 IntelliJ IDEA,並且我的 JavaFX 應用程序已准備好部署。 問題是當我生成 JAR 文件時,它不會運行,當我在命令行中運行它時,我得到一個異常 FXMLLoadException,盡管該項目在我的 IDE 中運行良好。

Ant任務以錯誤結束,構建15分鍾后,我真的不明白到底是什么問題。

所以我的問題是以正確的方式部署 JavaFX 應用程序的正確步驟是什么,歡迎任何教程或指南。

Java 應用程序可以以多種方式打包。 請瀏覽Java Packaging Overview以找到有關它的所有信息。 其中一種包裝是self-contained Java application

有不同的方法來創建這些包:

  • 使用 JDK 附帶的javapackager工具
  • JavaFX Ant 任務
  • 用於 Maven 項目的 JavaFX Maven 插件

自包含應用程序是應用程序打包方式之一,並且是特定於平台的。 該捆綁包包含:

  • 應用程序包
  • JRE 的私有副本

可以在此處找到可用捆綁包的列表。

讓我們看看我們可以使用的各種工具以及如何使用它們:

JavaPackager 工具

JavaPackager Tool是最基本的工具,可幫助您編譯、打包、簽名和部署 Java(FX) 應用程序,而無需編寫任何額外的腳本。 javapackager.jar文件位於 JDK 安裝的 bin 目錄中。

可以與它一起使用的命令列表可在此處獲得

JavaFX Ant 任務

JavaFX Ant Tasks通過為您的項目創建一個build.xml文件來幫助您打包您的應用程序。

可以在此處找到一組關於如何為您的項目使用 ant 腳本的示例。

可用於它的命令列表可在此處獲得

JavaFX Maven 插件

JavaFX Maven 插件利用將 java 應用程序打包到 maven 平台的用法。 您可以通過向項目添加插件來使用它來打包基於 maven 的 java 應用程序。

這個插件恕我直言,如果三個中easiest使用的話。 它是一個寫得很好、易於理解的工具,並且有大量的文檔。

JavaFX Gradle 插件

JavaFX Gradle Plugin也是來自 maven 插件的作者。 它具有 maven 插件的所有功能,但對於 Gradle :)

延伸閱讀:

Oracle 在其網站上為JavaFX 2JavaFX 8提供了有關打包的詳盡指南。

如果您需要針對特定​​問題的幫助,請發布您收到的錯誤的代碼和堆棧跟蹤。

如果您使用 Maven,另一種非常聰明的方法是使用maven-shade-plugin ( link )。 它構建了一個包含所有依賴項的大胖 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構建您的應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM