スポンサーリンク
スポンサーリンク

OpenJDKにしたけど、JavaFXが使えない!?OpenJFXの導入方法を解説

 

404 NOT FOUND

上記の記事でも書いた通り、JavaFXが使えないと実は困るんですよね。

OpenJDKではJavaFXの機能がありませんが、代わりにOpenJFXをダウンロードし、設定することでJavaFXの機能がOpeんJDKでも使えるようになります。

「OpenJDKに切り替えたものの、JavaFXが使えなくなった!」なんてことになってしまわないよう、「OpenJFX」の設定や使い方などを解説していきます。

OpenJFXをダウンロードする

まずは下記のリンクにアクセスし、「OpenJFX」をダウンロードします。

JavaFX

そしたら、赤い矢印で示された部分、「Downloads」をクリックし、ファイルをダウンロードしてください。

ファイルをダウンロードし、解凍すると「javafx-sdk-11.0.1」というフォルダが出来上がるはずです。(OSやバージョンによって名前が微妙に異なります

これでOpenJFXのダウンロードは完了します。

OpenJFXの設定

では次にOpenJFXの設定を行い、実際にJavaで動かせるようにします。

とはいっても、実は設定なしでもJavaで動かすことはできます。

例えば、

上記のように、「javafx-sdk-11.0.1」フォルダ内で実行すれば、設定を行う必要はありません。(モジュールの指定に関しては後に説明します

 

ただ、JavaFXのプログラムを使うためにわざわざ「javafx-sdk-11.0.1」フォルダ内にプロジェクトフォルダを何個も置くことはしたくありません。

そこで「javafx-sdk-11.0.1」フォルダのパスを設定してあげます。

Windowsの場合

Windowsの場合、パスを設定すると言ったら「環境変数のPathを設定」することになります。

「スタートメニュー」から「検索窓」に「環境変数」と入力し、「環境変数の設定」を選択してください。

ウィンドウが開いたら「Path」を選択し、「編集」→「新規追加」で「javafx-sdk-11.0.1」フォルダのパスを入力してください。

入力したら「OK」ボタンを押して設定を完了させてください。

Macの場合

Macの場合、「.bash_profile」という隠しファイルに設定を入力します。

 

次に、「.bash_profile」という隠しファイルを編集します。

上記のコマンドで「.bash_profile」の編集が行えます。

※「.bash_profile」がない場合

「.bash_profile」がない場合は、新たにファイルを作成する必要があります。

以下のコマンドで「.bash_profile」を作成してください。

 

Vimの使い方

・「i」キーで編集モードにする。

・「ESC」キーで編集モードを終了する。

・編集モードを終了した状態で、「:wq」と打ち、エンターを押すことで上書き保存して終了することができます。

 

以上の使い方を知っていれば編集が行えるので、以下のコードを入力してください。

(.bash_profile)

JavaFXLib」というのは任意の名前です。

「JavaFXLib:」以降の文は、「OpenJFX」のライブラリがある「lib」フォルダのパスです。

「javafx-sdk-11.0.1」の部分は、ご自身のOSやバージョンによって名前が異なるので、フォルダ名をしっかり確認してみてください。

JavaFXのプログラムを動かす

それでは実際にテストコードを作成し、JavaFXのコードを動かしてみます。

テストコード(Main.java)

このテストコードをコンパイルして実行します。

Windowsの場合

Macの場合

「-p」の引数に「JavaFXLib」と入力しましたが、この名前はご自身が設定した名前と一致させてください。

 

さて、「Windows」と「Mac」の両方で「–add-modules」という項目に「javafx.controls」という引数を入力しましたが、これは一体なにかというと、モジュール名です。

例えば今回のテストコードでは「javafx.application」と「javafx.stage」というパッケージをインポートしていますが、この2つのパッケージを実際に使うためにはモジュールというのをコンパイル・実行の際に指定しなくてはなりません。

それが「javafx.controls」なのです。

そこで、それ以外のモジュールを使うべきか否か、このクラスはどのモジュールを指定すればいいのか、そういった情報が必ず必要になるので、次の項目で使用するモジュールの確認を行なっていきます。

「jdeps」でモジュールの確認

「jdeps」コマンドを使うと、プログラムで使用しているJavaFXのクラスがどのモジュールに依存しているかを知ることができます。

Windowsの場合

Macの場合

 

このように、「–module-path」と「-s」にそれぞれ「パス」と「クラス名」を指定します。

そしてこの「パス」は先ほど設定した「lib」フォルダのパスとなります。

なので、「Windows」ならそのまま「lib」を、「Mac」なら「$JavaFXLib」(ご自身で設定した名前)を指定します。

そうすると、

このように、「Main」クラスは「javafx.graphics」というモジュールに依存するクラスを使用していることがわかります。

ではなぜ「javafx.controls」を指定したかというと、実は「javafx.controls」を指定すれば「javafx.base」と「javafx.graphics」の両方を指定したことになるのです。

ですから普通は「javafx.controls」を指定してしまいます。

まとめ

いかがでしたでしょうか。

「OpenJFX」に代表されるように、こういった風に別のライブラリを駆使してプログラミングを行うことは「Java」が今まで進めてきたことですので、今後もプロジェクト移行化に次々と対応する場面があると思います。

そういった時にしっかりとライブラリに関する知識を持っておくことは非常に重要ですので、この機会にライブラリについて勉強してみてはどうでしょうか。

コメント