前回の記事 「OpenJDK 11 に JavaFX を導入する」 では、 OpenJDK 11 に OpenJFX をマージして JavaFX がバンドルされた JDK を作成しました。今回は、 この JavaFX をバンドルした JDK と Eclipse を使って JavaFX アプリケーションの開発環境を構築していきます。
JavaToolsをダウンロードする
Oracle OpenJDK の Windows バイナリは ZIP 形式で配布されています。インストーラーは提供されていないため、 展開した JDK に PATH を通すといった作業を自前で行う必要があります。この作業を自動化するためのバッチファイルを用意しました。
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 を追加してきちんと最新情報を取得できるようにしたほうが望ましいのかもしれませんが、 今回は、 とりあえずニュースの取得を無効化することでエラー表示を回避します。Window → Preferences をクリックします。
左側のツリーから General → News を開きます。右側の 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 をインストールすることで問題が解決します。Help → Eclipse 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 を右クリックして New → Java Project を選択します。
Java 11 Support for Eclipse 2018-09 をインストールしたおかげで JRE の選択欄に JavaSE-11
が表示されていますね。
Project name に fx-sample
と入力して Finish をクリックします。
モジュール作成ダイアログが表示されますが、 今回はモジュールを作成しないのでそのまま Don't Create をクリックします。
空の Java プロジェクトが作成されました。fx-project
を展開して src
を右クリック、 New → Class を選択します。
以下の内容を入力して Finish をクリックします。
- Package:
com.example
- Name:
Sample1
空のファイル Sample1.java
を開いて編集します。
Sample1.java
に以下のソースコードを貼り付けて、 Ctrl + S で上書き保存します。
Sample1.javapackage 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 As → Java 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 が起動できなくなってしまうので気を付けてください。
Help → Install New Software... からアップデートサイト http://download.eclipse.org/releases/2018-09
を選択して e(fx)clipse をインストールしようとすると Java 11 未対応のバージョン 3.3.0 しか表示されません。この方法で e(fx)clipse をインストールしないでください。
Help → Eclipse Marketplace... から fx
で検索すると、 e(fx)clipse 3.4.1 が見つかりました。e(fx)clipse 3.4 で Java 11 対応がされているので、 e(fx)clipse 3.4 以上のバージョンをインストールすれば大丈夫です。
OpenJDK + OpenJFX + Eclipse 環境での JavaFX アプリケーション開発手順の説明は以上です。