JavaFX アプリケーション

JavaFX 11以上、Scene Builder、Eclipse を利用して


最初にすること

投稿日時:

最終更新日時:

タグ:

まず、最初にすることは、AdoptOpenJDK 11、JavaFX 11、Scene Builder for Java 11(Release Candidate)、Eclipse をインストールすることである。私の環境はWindows 10 64ビット版なので、それに合うものをインストールした。まず、AdoptOpenJDK 11 から「OpenJDK 11(LTS)」、「HotSpot」を選び(現時点では、11.0.2+9)、zip ファイルをダウンロードし、適切なディレクトリに解凍する。例えば、そのディレクトリを「absolute-path-to-OpenJDK11」とする。環境変数「JAVA_HOME」に「absolute-path-to-OpenJDK11」を設定し、環境変数「PATH」に「absolute-path-to-OpenJDK11\bin」を追加する。例えば、コマンドプロンプトでは、

set JAVA_HOME=absolute-path-to-OpenJDK11
set PATH=absolute-path-to-OpenJDK11\bin;%PATH%

とする。次に、JavaFX 11 から「JavaFX SDK」と「JavaFX jmods」(現時点では、11.0.2)をダウンロードし、それらの zip ファイルを適切なディレクトリに解凍する。これらのディレクトリを、各々、「absolute-path-to-JavaFX11SDK」、「absolute-path-to-JavaFX11jmods」としておく。次に、Scene Builder からScene Builder for Java 11(Release Candidate)をダウンロードしインストールする。Scene Builder を起動すると、文字化けしているので、「Scene Builder 文字化け」を参考にして英語版に設定する。最後に、Eclipse からEclipse(現時点では、Eclipse IDE 2018-12)をダウンロードし、インストールする。

環境変数「JAVA_HOME」を設定したので、現時点で Eclipse は AdoptOpenJDK 11 を認識している。Eclipse を起動し、Window>Preferences の Java>Installed JREs で確認できる

では、JavaFX 11 SDK の方を Eclipse に認識させる楽な方法として、Window>Preferences のJava>Build Path>User Libraries で、例えば、「JFX11SDK」という名前の Library を新規に作成し、その中に「Add External JARS…」を押して、JavaFX 11 SDK を入れたディレクトリの下にある lib ディレクトリ(absolute-path-to-JavaFX11SDK\lib)内にある8個の jar ファイルを加える。その結果

である。JavaFX 11 アプリケーションを作成する各プロジェクトで、Project>Properties の Java Build Path の Libraries タブで Modulepath を選択し、「Add Library…」ボタンを押し、今作成した「JFX11SDK」を選べばよいとのことだが、選ぶ候補の中に「JFX11SDK」が見当たらない(これは私だけの不都合かもしれない!)。この回避策として、代わりに「Add External JARs…」ボタンを押し、absolute-path-to-JavaFX11SDK\lib 内にある8個の jar ファイルを加える。

Eclipse 内でScene Builder を実行できるようにするために、すなわち、fxml ファイルを右クリックし「Open with SceneBuilder」を選べば、Scene Builder が起動し、編集できるようにするために、その位置を Window>Preferences の JavaFX で C:\…\SceneBuilder.exe と指定する、とある。(多分)パスに空白を含む場合、これが上手く作動しない。これは、Eclipse 内から起動する場合だけではなく、例えば、Explorer でパスに空白を含むファイルを指定しても同様のエラーが発生する。しかしながら、まず、Scene Builder を起動し、その中からファイルをオープンすれば、エラーがなく編集できる。

JavaFX アプリケーションを楽に作成するために、Help>Eclipse Market Place… からe(fx)clipseをインストールする。こうすることで、プロジェクトの新規作成時などに、JavaFX を選ぶことが出来、その結果、アプリケーションの GUI を xml で記述した fxml ファイル、それを制御する Java ファイル、基本的なコードが含まれたファイル Main.java、及び、css ファイルが自動的に生成される。

私の目的は、作成したアプリケーションを(その実行に必要なものだけからなる)JRE と共にまとめ、(JDK11 または、JRE11 がインストールされていない)他のパソコンで実行する、ことなので、 module-info.java を必要とする。

私だけかもしれないが、e(fx)clipse を利用して JavaFX アプリケーションの新規プロジェクトを作成すると、module-info.java を作ると指定しても、残念ながら、自動的に作ってくれない。回避策として、そのプロジェクトの src フォルダを右クリックし、New>File で module-info.java を自分で作成する。

以上で、事前の準備は整った。