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

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-module=javafx.controls

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

テストコードの実行

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

package com.nompor;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class Test extends Application{

	@Override
	public void start(Stage arg0) throws Exception {
		//パネル定義
		Group grp = new Group();
		Canvas cvs = new Canvas(300,300);
		Scene s = new Scene(grp,300,300);

		//各種パネルセット
		arg0.setScene(s);
		grp.getChildren().add(cvs);

		//ウィンドウ表示
		arg0.show();

		//描画
		GraphicsContext g = cvs.getGraphicsContext2D();
		g.setFill(Color.GREEN);
		g.fillRect(10, 10, 50, 50);
	}

}
実行結果

どうやらOKのようです。

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

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

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

JavaJavaFX

Posted by nompor