JavaFXで簡単なアプリケーションを作ろうとした際に
Java11ではモジュールに追加する必要があり、その方法を見つけるのに苦労したので設定方法を簡単に記載します。
開発環境
Java11を使用。
IDEはIntelliJを使用しました。
JavaFXをインストールする
以下のサイトからJavaFXをインストールします。
https://gluonhq.com/products/javafx/
IntellJで新しいJavaFXプロジェクトを作成する
IntellJの File→New→Project を選択する。
JavaFXを選択し、Next
適当なプロジェクト名を入力して完了。
初期状態でプロジェクトをrunするとエラーになります
IntellJがサンプルコードを書いた状態でプロジェクトを作成してくれるのですが、
(コンパイルエラーはないものの)このままプロジェクトをRunすると
JavaFXランタイム・コンポーネントが不足しており、このアプリケーションの実行に必要です
というエラーになります。
Java11(Java9以降)ではJavaFXはモジュール化されているため、その設定を行わないと正しく動作しないためです。
module-infoを作成、モジュールの情報を追記する
srcの中のパッケージを 右クリック→New→module-info.java で
module-info.javaを作成します。
作成したmodule-info.javaの中に以下のように記述します。
※transitive は書かなくてもこの時点では動作します。
requires transitive javafx.graphics;
requires transitive javafx.controls;
requires transitive javafx.fxml;
opens sample;
exports sample;
アプリケーションを起動できました
module-info.javaを記述して再度Runすると以下のようなアプリケーションウィンドウが開きます。
以上でJava11でJavaFXのアプリケーションが起動できました。
参考にした記事