web-dev-qa-db-ja.com

JavaFXアプリケーションをデプロイし、JARと自己完結型アプリケーションおよびネイティブインストーラーを作成するための最良の方法は何ですか

IntelliJ IDEAを使用しており、JavaFXアプリケーションをデプロイする準備ができています。問題は、JARファイルを生成しても実行されず、コマンドラインで実行すると例外FXMLLoadExceptionが発生することですが、プロジェクトはIDEで完全に機能しています。

Antタスクはエラーで終了します。ビルドから15分後、問題の正確な原因がわかりません。

だから私の質問は、JavaFXアプリケーションを正しい方法でデプロイするための正しい手順は何か、チュートリアルやガイドを歓迎します。

11
Jean-Baptiste-B

A Javaアプリケーションはさまざまな方法でパッケージ化できます。 Javaパッケージングの概要 を実行して、それに関するすべてを見つけてください。パッケージ化の1つはself-contained Java applicationです。

これらのパッケージを作成する方法はいくつかあります。

  • JDKに付属するjavapackagerツールを使用する
  • JavaFX Antタスク
  • Mavenプロジェクト用のJavaFX Mavenプラグイン

自己完結型アプリケーションは、アプリケーションをパッケージ化する方法の1つであり、プラットフォーム固有です。バンドルに含まれるもの:

  • アプリケーションパッケージ
  • 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プロジェクトにプラグインを追加することにより、アプリケーション。

このプラグインIMHO、easiestが3つのうち使用する場合。とても上手く書かれ、理解しやすいツールであり、豊富なドキュメントがあります。

JavaFX Gradleプラグイン

JavaFX Gradle Plugin もmavenプラグインの作者によるものです。 Mavenプラグインが持つすべての機能を備えていますが、Gradleの場合はそうです。

さらに読む:

23
ItachiUchiha

JavaFX 2 および JavaFX 8 については、オラクルのWebサイトにパッケージングに関する広範なガイドがあります。

特定の問題のヘルプが必要な場合は、コードと取得したエラーのスタックトレースを投稿してください。

1
Roland

Mavenを使用する場合、maven-shade-pluginlink )を使用するのも非常に賢い方法です。それはあなたがそれ以上何もすることなく直接実行することができるすべての依存関係を持つ1つの大きなファット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>

シェードとjavaFxプラグインのmainClass内のパッケージ名を変更すれば完了です。これで、いつものようにmvn packageを使用してアプリケーションを構築できます。

0
Mark Kowalski