Java 11 + EclipseでJavaFXアプリ開発

前回の記事 OpenJDK 11 JavaFX を導入する では OpenJDK 11 OpenJFX をマージして JavaFX がバンドルされた JDK を作成しました。今回は この JavaFX をバンドルした JDK Eclipse を使って JavaFX アプリケーションの開発環境を構築していきます。

JavaTools をダウンロードする

Oracle OpenJDK Windows バイナリは ZIP 形式で配布されています。インストーラーは提供されていないため 展開した JDK PATH を通すといった作業を自前で行う必要があります。この作業を自動化するためのバッチファイルを用意しました。

JavaTools.zip ダウンロード (3.8MB)

JavaTools.zip をダウンロード 展開して適当なフォルダー たとえば C:¥Java など にコピーします。

JavaFX をバンドルした JDK をコピーする

前回作成した JavaFX をバンドルした JDK フォルダーを JavaTools.zip を展開したのと同じ場所にコピーします。

Eclipse 2018-09 をダウンロードする

2018 9 月から Eclipse のリリースサイクルとリリース名が変更になりました。惑星の名前をアルファベット順に付けるという長年続いたリリース名が廃止になってしまったのは残念です。Callisto Europa Ganymede Galileo Helios Indigo Juno Kepler Luna Mars Neon Oxygen Photon … 振り返ってみると D F が無かったり G 2 つあったりしますね。

今後は 13 3 ヵ月 ごとのローリングリリースとなり 2018-09 といった年月がそのままリリース名になります。内部のプラットフォーム バージョンは継続しており Eclipse 2018-09 のバージョンは 4.9 次にリリースされる Eclipse 2018-12 4.10 と続いていきます。

閑話休題。

eclipse.org から Windows 64 ビット版をダウンロードします。Oracle OpenJDK および Gluon OpenJFX が提供している Windows バイナリは 64 ビット版のみであるため Windows JavaFX アプリケーションを開発するには 64 ビット Windows が必須となっています。

https://www.eclipse.org/downloads/packages/

今回は Eclipse IDE for Java Developers パッケージを使用しますが Web アプリケーションの開発も視野に入れている場合は Eclipse IDE for EE Developers パッケージを選択してもいいかもしれません。

ダウンロードした ZIP ファイルを展開して JDK と同じ場所にコピーします。

フォルダー名は eclipse のままでも問題ありませんが バージョンが分からなくなってしまうのも不便なので eclipse-java-2018-09-win32-x86_64 にリネームしておきました。

Eclipse を起動する

JavaTools OpenJDK + OpenJFX Eclipse を同じフォルダーに展開すれば準備完了です。Eclipse.bat をダブルクリックして実行します。

この Eclipse.bat は同じ場所にある JDK フォルダーを検索して PATH を通してから eclipse.exe を実行してくれるバッチファイルです。Eclipse のスプラッシュ スクリーンが表示されます。少し時間がかかりますが焦らずに待ちましょう。

初回起動時にはウェルカムページが表示されます。今後 ウェルカムページを表示する必要がない場合は右下の Always show Welcome at startup のチェックを外します。右上の Workbench をクリックするとワークベンチ画面に切り替わります。

定期的なニュースの取得を無効にする

Eclipse 2018-09 を起動してしばらく時間が経つと以下のエラーダイアログが表示されます。

‘Polling news feeds’ has encountered a problem.
An internal error occurred during: “Polling news feeds”.

これは Java 11 JAXB Java Architecture for XML Binding JDK に同梱されなくなったことが原因です。Eclipse は最新情報を取得するために内部で JAXB を使用しているのですが それが見つからないためにエラーが発生しています。

JAXB を追加してきちんと最新情報を取得できるようにしたほうが望ましいのかもしれませんが 今回は とりあえずニュースの取得を無効化することでエラー表示を回避します。WindowPreferences をクリックします。

左側のツリーから GeneralNews を開きます。右側の Enable automatic news polling のチェックを外して Apply and Close

これで定期的にニュースをチェックすることもなくなりエラーが表示されなくなります。

Java 11 Support for Eclipse 2018-09 をインストールする

実は Eclipse 2018-09 Java 11 に完全対応しているわけではありません。Java プロジェクト作成時の JRE として Java 11 が選択できないといった問題があります。

Eclipse Marketplace から Java 11 Support for Eclipse 2018-09 をインストールすることで問題が解決します。HelpEclipse Marketplace... を開きます。

Eclipse Marketplace のウィンドウが表示されたら Find 欄に java11 と入力して Enter を押します。そうすると “Java 11 Support for Eclipse 2018-09 (4.9) 4.9” が見つかるので Install をクリックします。

インストールが始まると途中で選択機能の確認画面が表示されます。Keep my installation the same and modify the items being installed to be compatible が選択された状態で Confirm > をクリックします。

ライセンス確認画面も表示されます。ライセンスに同意する場合は I accept the terms of the license agreement を選択して Finish をクリックします。

インストールには少し時間がかかります。インストールが完了すると Eclipse の再起動を促すダイアログが表示されます。Restart Now をクリックして Eclipse を再起動します。

JavaFX アプリケーションを作ってみる

Eclipse が再起動したら簡単な JavaFX アプリケーションを作ってみます。左側の Package Explorer を右クリックして NewJava Project を選択します。

Java 11 Support for Eclipse 2018-09 をインストールしたおかげで JRE の選択欄に JavaSE-11 が表示されていますね。

Project name fx-sample と入力して Finish をクリックします。

モジュール作成ダイアログが表示されますが 今回はモジュールを作成しないのでそのまま Don't Create をクリックします。

空の Java プロジェクトが作成されました。fx-project を展開して src を右クリック NewClass を選択します。

以下の内容を入力して Finish をクリックします。

  • Package: com.example
  • Name: Sample1

空のファイル Sample1.java を開いて編集します。

Sample1.java に以下のソースコードを貼り付けて Ctrl + S で上書き保存します。

Sample1.java
package com.example; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.stage.Stage; public class Sample1 extends Application { public static void main(String[] args) { launch(args); } public void start(Stage stage) { Button button = new Button("Hello, World!!"); button.setOnAction((event) -> { stage.close(); }); Scene scene = new Scene(button, 320, 240); stage.setTitle("JavaFX"); stage.setScene(scene); stage.show(); } }

Sample1.java を右クリックして Run AsJava Application を選択します。

JavaFX アプリケーションが起動すれば成功です! ウィンドウをクリックするとこのアプリケーションは終了します。

あらかじめ JavaFX をバンドルした JDK を用意していたので OpenJFX の設定を意識することなく JavaFX アプリケーションを開発 実行することができました。JavaFX を使用する際には OpenJFX OpenJDK にマージしてしまうのがオススメの方法です。

前回の記事 OpenJDK 11 JavaFX を導入する で説明した OpenJDK のマージではモジュールだけでなく src.zip もマージされています。JDK src.zip JavaFX src.zip の中身が統合されていますので Eclipse でそのまま JavaFX javadoc をホバー表示したり JavaFX のソースコードにステップ インしていくことができます。

e(fx)clipse をインストールするときの注意

Eclipse e(fx)clipse プラグインを追加すると JavaFX アプリケーションの開発がさらに便利になります。ですが Java 11 環境で実行している Eclipse への e(fx)clipse インストールには注意してください。

e(fx)clipse 3.3 までは Java 11 に対応していません。e(fx)clipse 3.3 以前のバージョンをインストールしてしまうと Eclipse が起動できなくなってしまうので気を付けてください。

HelpInstall New Software... からアップデートサイト http://download.eclipse.org/releases/2018-09 を選択して e(fx)clipse をインストールしようとすると Java 11 未対応のバージョン 3.3.0 しか表示されません。この方法で e(fx)clipse をインストールしないでください。

HelpEclipse Marketplace... から fx で検索すると e(fx)clipse 3.4.1 が見つかりました。e(fx)clipse 3.4 Java 11 対応がされているので e(fx)clipse 3.4 以上のバージョンをインストールすれば大丈夫です。

OpenJDK + OpenJFX + Eclipse 環境での JavaFX アプリケーション開発手順の説明は以上です。

この記事を共有しませんか?