メインコンテンツへスキップ
  1. ノート/
  2. Java/

java_lib よくある error

·849 文字·2 分· loading · loading · · ·
ICE345
著者
ICE345
CS Student | System | Linux | OCaml
javacでコンパイルする時やjavaで実行する時にライブラリを追加するには、--module-pathでライブラリパスを指定し、--module-addでライブラリを追加する。

比較的新しい Ubuntu バージョン(例:22.04)では、openjdk-8-jdkパッケージには OpenJDK 8 のコア機能のみが含まれ、JavaFX ライブラリは含まれなくなっています。JavaFX は Java 11 以降 JDK から削除されたため、OpenJDK 8 にも自動では含まれていません。

原因:
#

  1. JavaFX の分離

    • Java 11以降、JavaFX は標準 JDK から削除され、独立したモジュールになりました。OpenJDK 8 には JavaFX が含まれていません。これは設計理念や、将来の JavaFX モジュール化方針が異なるためです。
  2. JavaFX と OpenJDK 8

    • OpenJDK 8 の時代には JavaFX は JDK の一部として提供されていましたが、より新しいバージョン(Java 11 以降)では独立したライブラリへ移されました。そのため、OpenJDK 8 のパッケージには JavaFX が含まれなくなっています。

解決方法:
#

OpenJDK 8 を使うシステムで JavaFX を追加するには、JavaFX SDK を手動でインストールする必要があります。以下の手順で操作します。

  1. JavaFX SDK をダウンロード

  2. JavaFX を展開して設定

    • ダウンロードした SDK ファイルを展開します。JavaFX の JAR ファイルを含むlibフォルダが得られます。
  3. JavaFX アプリケーションのコンパイルと実行

    • JavaFX プログラムをコンパイルする時は、--module-path引数で JavaFX JAR ファイルの場所を指定します。
    • JavaFX プログラムを実行する時は、--module-path--add-modules引数を使い、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 と正しく組み合わせて使用できます。