IntelliJ IDEAを使用しており、JavaFXアプリケーションをデプロイする準備ができています。問題は、JARファイルを生成しても実行されず、コマンドラインで実行すると例外FXMLLoadExceptionが発生することですが、プロジェクトはIDEで完全に機能しています。
Antタスクはエラーで終了します。ビルドから15分後、問題の正確な原因がわかりません。
だから私の質問は、JavaFXアプリケーションを正しい方法でデプロイするための正しい手順は何か、チュートリアルやガイドを歓迎します。
A Javaアプリケーションはさまざまな方法でパッケージ化できます。 Javaパッケージングの概要 を実行して、それに関するすべてを見つけてください。パッケージ化の1つはself-contained Java application
です。
これらのパッケージを作成する方法はいくつかあります。
javapackager
ツールを使用する自己完結型アプリケーションは、アプリケーションをパッケージ化する方法の1つであり、プラットフォーム固有です。バンドルに含まれるもの:
利用可能なバンドルのリストは ここにあります です。
私たちが自由に利用できるさまざまなツールとそれらの使用方法をチェックしてみましょう:
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の場合はそうです。
さらに読む:
Mavenを使用する場合、maven-shade-plugin
( link )を使用するのも非常に賢い方法です。それはあなたがそれ以上何もすることなく直接実行することができるすべての依存関係を持つ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
を使用してアプリケーションを構築できます。