JavaFX アプリが動かない
jar で配布されている Java アプリについて、Windowsでは JRE / JDK がインストールされていれば jar をダブルクリックして実行することができた…はず。
AdoptOpenJDK から最新版LTSであるOpenJDK11をインストールしたのだが
エラー: メイン・クラスXXXX.Mainを検出およびロードできませんでした
原因: java.lang.NoClassDefFoundError: javafx/application/Application
となり実行することができない。
JavaFX が同梱されてない
いろいろ調べた結果、JavaFX がそのままではインストールされなくなったのが原因らしい。
OpenJFX + OpenJDK で JavaFX を動かす - JavaFX in the Box
ざっくりとした手順
- JavaJFXをインストール
-
--module-path
,--add-modules
で必要な javafx モジュールを指定して java を起動
JavaFX のインストール
Getting Started with JavaFX から必要なパッケージをダウンロードする。動かすだけでもSDKが必要な模様
起動オプション
jar をダブルクリックして動かすだけならば
> java -jar XXXX.jar
となるが、JavaFX をモジュールとして明示的に指定してやる必要があるので、次のようなバッチファイルを用意して起動させることにした。なお、ダウンロードした javafx-sdk は C:\Program Files\AdoptOpenJDK\javafx-sdk-11.0.2
に展開している
@echo off
set JAVA_FX="C:\Program Files\AdoptOpenJDK\javafx-sdk-11.0.2\lib"
java --module-path %JAVA_FX% --add-modules=javafx.controls,javafx.fxml -jar XXXX.jar
対象のアプリが javafx.fxml を必要としていたため、javafx.controls, javafx.fxml の2つを追加モジュールとして指定している。