OpenJDKとEclipseでJavaFXの動作環境の構築

2023年12月10日

OracleのJDKが有料化されて、Eclipseの標準JDKがAdoptOpenJDKに変更された模様です。この変更に伴って環境構築するとJavaFX動かねーってなりましたので、今回はEclipseでOpenJDKを使い、JavaFX(OpenJFX)を動作させてみます。



Eclipseをダウンロード

Eclipseのダウンロードはこちらのサイトから行います。

2019/01/11時点の最新はEclipse 2018-12です。

ダウンロードしたらzipファイルをWinRARなどの解凍ツールで解凍しておきましょう。

OpenJFXのダウンロード

OpenJFXのダウンロードはこちらのサイトから行います。

今回はバージョン11.0.1を選択しました。

ダウンロードしたら同じくzipファイルをWinRARなどで解凍しておきましょう。解凍場所はどこでもいいですが、私はeclipseのフォルダと同階層に解凍しました。

中にはlibフォルダにjarファイル、binフォルダにdllなどが含まれています。

これらのファイルが存在するか確認しておきましょう。

jarファイルの設定

JavaFXライブラリへの参照設定をします。

プロジェクト右クリック→「ビルドパス」→「ライブラリの追加」を選択

ユーザーライブラリーを選択

新規を選択

任意の名前を付けてOK(ここではlibとします。)

作成したライブラリをクリックして外部jarの追加

ここで解凍したopenjfxのlibフォルダの中にあるjarをすべて選択し、開くを選択。

これでjarの設定は完了です。

 


dllの設定とモジュール設定

まずは適当なメインクラスのソースコードを作成してください。

今回はTestクラスを作成しました。

 

次にこのファイルを右クリック→「実行」→「実行の構成」を選択

一覧から「Javaアプリケーション」→「Test」を選択します。
そしてタブの「環境」を選択し、「新規」をクリック。

ここで解凍したopenjfxのbinフォルダへのパスを設定します。実行時にシステムの環境変数を追加してくれるので、この設定をしておけばWindowsの環境変数を汚さずに済みますね。

これでdllの指定は完了です。


次はモジュール設定です。

Java9以降はモジュール機能が追加されており、OpenJDKでJavaFXのライブラリを使用するにはモジュール設定を行う必要があります。

モジュール指定はコマンドライン引数で行いますので、EclipseのVM引数に設定してみます。

さきほどの実行構成の画面で「引数」タブを選択し、VM引数にモジュールエクスポートコマンドを記述しておきます。

--module-path=先ほど解凍したopenjfxフォルダのlibフォルダへのパスを指定

--add-modules=javafx.controls

以上でOpenJDKでJavaFXを実行できる準備が整いました。

テストコードの実行

それではJavaFXのコードを実行できるか試してみましょう。

  1. package com.nompor;
  2.  
  3. import javafx.application.Application;
  4. import javafx.scene.Group;
  5. import javafx.scene.Scene;
  6. import javafx.scene.canvas.Canvas;
  7. import javafx.scene.canvas.GraphicsContext;
  8. import javafx.scene.paint.Color;
  9. import javafx.stage.Stage;
  10.  
  11. public class Test extends Application{
  12.  
  13. @Override
  14. public void start(Stage arg0) throws Exception {
  15. //パネル定義
  16. Group grp = new Group();
  17. Canvas cvs = new Canvas(300,300);
  18. Scene s = new Scene(grp,300,300);
  19.  
  20. //各種パネルセット
  21. arg0.setScene(s);
  22. grp.getChildren().add(cvs);
  23.  
  24. //ウィンドウ表示
  25. arg0.show();
  26.  
  27. //描画
  28. GraphicsContext g = cvs.getGraphicsContext2D();
  29. g.setFill(Color.GREEN);
  30. g.fillRect(10, 10, 50, 50);
  31. }
  32.  
  33. }
実行結果

どうやらOKのようです。

今回は下記のサイトを参考にして構築しました。

https://skrb.hatenablog.com/entry/2018/05/29/210000

下記のサイトではOpenJDKとOpenJFXをマージしてくれるバッチを作成してくださっているようですので、手っ取り早く使えるようにしたい方は是非利用してみてください。
https://blogs.osdn.jp/2018/11/12/merge-openjfx.html

EclipseでJavaFXを設定する動画

2023/12/10時点でJava21を使用した設定動画です。