javacでコンパイルする時やjavaで実行する時にライブラリを追加するには、--module-pathでライブラリパスを指定し、--module-addでライブラリを追加する。比較的新しい Ubuntu バージョン(例:22.04)では、openjdk-8-jdkパッケージには OpenJDK 8 のコア機能のみが含まれ、JavaFX ライブラリは含まれなくなっています。JavaFX は Java 11 以降 JDK から削除されたため、OpenJDK 8 にも自動では含まれていません。
原因:#
JavaFX の分離:
- Java 11以降、JavaFX は標準 JDK から削除され、独立したモジュールになりました。OpenJDK 8 には JavaFX が含まれていません。これは設計理念や、将来の JavaFX モジュール化方針が異なるためです。
JavaFX と OpenJDK 8:
- OpenJDK 8 の時代には JavaFX は JDK の一部として提供されていましたが、より新しいバージョン(Java 11 以降)では独立したライブラリへ移されました。そのため、OpenJDK 8 のパッケージには JavaFX が含まれなくなっています。
解決方法:#
OpenJDK 8 を使うシステムで JavaFX を追加するには、JavaFX SDK を手動でインストールする必要があります。以下の手順で操作します。
JavaFX SDK をダウンロード:
- OpenJFX 公式サイトへアクセスし、自分の OS に合う JavaFX SDK をダウンロードします。
JavaFX を展開して設定:
- ダウンロードした SDK ファイルを展開します。JavaFX の JAR ファイルを含む
libフォルダが得られます。
- ダウンロードした SDK ファイルを展開します。JavaFX の JAR ファイルを含む
JavaFX アプリケーションのコンパイルと実行:
- JavaFX プログラムをコンパイルする時は、
--module-path引数で JavaFX JAR ファイルの場所を指定します。 - JavaFX プログラムを実行する時は、
--module-pathと--add-modules引数を使い、JavaFX モジュールが利用できるようにします。
- JavaFX プログラムをコンパイルする時は、
例:#
ダウンロードして展開した JavaFX SDK が/path/to/javafx-sdkにあると仮定すると、以下のコマンドで JavaFX プログラムをコンパイル・実行できます。
コンパイル:
javac --module-path /path/to/javafx-sdk/lib --add-modules javafx.controls HappyFaceFX.java実行:
java --module-path /path/to/javafx-sdk/lib --add-modules javafx.controls HappyFaceFXこれで JavaFX ライブラリを OpenJDK 8 と正しく組み合わせて使用できます。

