Help us understand the problem. What is going on with this article?

JavaFXアプリをJava8/11両方で動くjarファイルに固める

More than 1 year has passed since last update.

結論

  • 各プラットフォーム向け OpenJFX 11 ライブラリをすべて含む fat jar を生成する.

JavaFX (Java 11から非同梱)

JavaFXは,JVM上で動作するクロスプラットフォームなGUIライブラリです.が,Java 11からライブラリが同梱されなくなり,かわりにOpenJFXとして外部ライブラリ化されました.

ここで悩ましいのは「どのJavaバージョンに対応するか?」です.Java 11に対応したいものの,Java 8を簡単に切り捨てるわけにはいきません(個人ユーザへのOracleの無償アップデート提供は2020年末まで続く).

Java8/11 両方で動かす fat jar

この悩みを解決するのが fat jar で,端的に言えば OpenJFX 11 ライブラリを jar ファイルにすべて含めてしまいます.

詳細は Getting Started with JavaFX 11 > Runtime images > Non-Modular project に記載がありますが, Gradle だと(通常のjarタスクの設定に加えて)下記のような指定を追加します.

build.gradle
compileOnly "org.openjfx:javafx-graphics:$javafx.version:win"
compileOnly "org.openjfx:javafx-graphics:$javafx.version:linux"
compileOnly "org.openjfx:javafx-graphics:$javafx.version:mac"

そしてJDK11でビルドすると, Java8/11 両方で動く fat jar が出来上がります.

no_clock
P2P地震情報とかも作ってます.
https://www.nyamikan.net/
m3dev
インターネット、最新IT技術を活用し日本・世界の医療を改善することを目指します
https://m3.recruitment.jp/engineer/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away