contentJavaFXプロジェクトを実行可能なJARファイルとしてエクスポートするKotlinIntelliJgradleJavaFXtornadoFXこんにちは、Androidエンジニアの忽那です。現在、社内用に受付システムを空いた時間で開発中です。IDEAでJavaFXプロジェクトを作成しました。Javaそのままでも良かったのですが、せっかくなのでKotlinを使いたかったので、JavaFXをKotlinで書きやすくしてくれるTornadoFXというライブラリを使ってみました。この辺のシステムの実装方法はいずれ別記事として出したいと思います。本題はタイトルにあるように、TornadoFXを使って作成したJavaFXプロジェクトを実行可能のJARファイルとしてエクスポートする方法です。アプリの開発が完了し、いざエクスポートしようとしたところ方法が全くわからん!ググったら情報がたくさん出てきますが、どうやっても上手くいかない...ビルドが通らなかったり、jar作っても起動時にMainクラスが見つからないと怒られたり、ライブラリが存在しないと怒られたり...ということで、詰まったところと解決方法を備忘録として残しておきます。ちなみに今回のプロジェクトはGradleプロジェクトです。Mavenプロジェクトの場合は参考にならないと思うのでご了承ください。詰まったところ1そもそもビルドが通らないこれはJDKのバージョンが原因のことが多いです。JavaFXはJDK11以降はJDKに含まれていないようです。IDEAで使うJDKのバージョンを10にしたところ上手くいきました。Settings→SDKsの画面までいき、+→JDKを選択し、インストールしたJDKのあるフォルダを選択します。Windows環境だと少し違うかもしれませんが、Macの場合はLibrary/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Homeを選択すると上手くいきました。そのあと、再びProjectStructure画面でProjectSettings→Project→ProjectSDKまでいき、先ほど追加したJDK10を選択しましょう。これでJavaFXプロジェクトのビルドが通るようになったはずです。IDEAのBuildArtifactsという機能を使えばJARファイルをエクスポートすることができます。Applicationを選択することができます。バージョンのせいなのかわかりませんが私はこちらの機能ではどうしても正常に動くJARファイルをエクスポートすることができなかったので、諦めました。すればいいのか、というのを次の項目で説明します。解決法プラグインを使ってfatJarファイルを生成するfatJarというのは依存関係のあるライブラリを全て内包したJARファイルのことです。実行するPCの環境に左右されることもありませんし、ライブラリのクラスパスをマニフェストで指定する必要もありません。ライブラリを全て含んでいる分、ファイルサイズは大きくなります。Shadowこちらの記事を参考にさせていただきました。build.gradleに以下を追記し、プラグインを使用できるようにします。'MainKt'の部分です。今回はメインクラスとして、「Main.kt」というファイルを作っています。この場合は「MainKt」という書き方で指定しないと認識してくれないので注意してください。Javaファイルの場合は「Main」で大丈夫です。ややこしいですね...build.gradleの設定が完了したら、ターミナルを開き、アプリのルートディレクトリまで移動し、以下のコマンドを実行することでjarファイルが生成されます。shadowJar[アプリディレクトリ]/build/libs/に、[アプリ名]-all.jarというファイルが生成されているはずです。JavaFxアプリをfatJarで生成したので、これをダブルクリックすればそのまま動きます。アプリケーションの開発そのものより実行可能ファイルの生成に苦労するという、想定外の展開になりましたが、なんとかなりました。同じところで詰まっている方は参考にしていただければ幸いです。requestStockLike5@y_kutsunaAndroidばっかりやってます。Follow株式会社Rosso渋谷にある少数精鋭のベンチャーSierです。最新技術・手法は常にキャッチアップし社内勉強会で情報共有しています。最近では外部技術セミナーも開催し情報発信の幅を広げています。