EclipseにJavaFXを導入するには【MacOSX向け,2021最新版】

## はじめに

MacでEclipseを使用してJavaのGUIプログラミングを行っていたのですが，JavaFXを導入しようとした際に手順が分からず，他の記事を参考にしたもののエラーが出て困ったため，いくつかのサイトを見て最終的に導入できた方法をまとめました．
（2020.11.30時点）
＜追記＞
Eclipseのバージョンを更新しても動作することを確認しました．
（2021.12.13時点）

## 動作環境
- macOS Catalina（10.15.5）

- Eclipse IDE for Java Developers (includes Incubating components)
Version: 2020-09 (4.17.0) 
→ Version: 2021-12 (4.22.0)
`brew cask install eclipse-java`

- e(fx)clipse（3.6.0）
→ Version: 3.7.0
- javaSE 14 （他のバージョンについてもおそらくこの方法で大丈夫なはず）

## 導入手順

1.  `Help -> Eclipse Marketplace`を選択
![スクリーンショット 2020-11-30 13.38.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289116/652b3350-9056-9f2a-83bd-8e0e3dcbb2f7.png)

2.  検索バーに「fx」と入力 -> e(fx)clipseをインストール
![スクリーンショット 2020-11-30 13.40.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289116/a0b13931-f477-a35c-66b7-1c7d3f4653bd.png)
4.  https://gluonhq.com/products/javafx/
    上記URLのLatest Releaseから対応するSDKをダウンロード
    今回はJavaFX Mac OS X SDK
![スクリーンショット 2020-11-30 13.41.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289116/6f12fb89-9007-125b-4148-8ff2a7cadab8.png)

5.  ダウンロードしたopenjfx-15.0.1_osx-x64_bin-sdk.zipを解凍し，任意の場所に置く
6.  `Eclipse -> Preferences`，検索バーに「user」と入力
7.  `Java -> Build Path -> User Libraries`を選択
![スクリーンショット 2020-11-30 13.42.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289116/9d117d8b-14d7-ed2b-b5e1-44d34a137740.png)

8.  右側のNewから任意の名前を入力し，新規作成
9.  `Add External JARs...` を選択し，5.でダウンロードしたフォルダのlib内のjarファイルを全て選択

ここまででインストール関連の作業は終了[^1][^2]

## 動作確認

10. `新規プロジェクト -> Others`から`JavaFX -> JavaFX Project`を選択
![スクリーンショット 2020-11-30 13.44.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289116/153a4429-f481-9933-0a08-b1a4883cc9c4.png)

11. `Project name`を入力し，Next
12. `Create module-info.java file`のチェックを外す -> finish
13. 作成したプロジェクトを右クリックし，`Build Path -> Add Library`
![スクリーンショット 2020-11-30 13.45.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289116/e108932b-1020-24af-45fd-283e286c82f6.png)

14. `User Library`から導入手順8.で作成したライブラリーを選択
15. 実行ボタンのプルダウンからRun Configurationsを開き，VM argumentsに
    `--module-path SDK-path --add-modules javafx.controls,javafx.fxml`
    を入力[^3]
    `SDK-path` は導入手順5.でダウンロードしたフォルダのlibの<b>絶対パス
16. その下の`Use the -XstartOnFirstThread argument when launching with SWT` のチェックを外す
![スクリーンショット 2020-11-30 13.48.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289116/5da69f3f-8292-3f6d-9d08-3388aa32424f.png)

これで白紙のウインドウが表示されたはず

## JavaFXを導入するにあたってこれまでに発生したエラー
- エラー: JavaFXランタイム・コンポーネントが不足しており、このアプリケーションの実行に必要です
 -> 動作確認6. が必要
- Error occurred during initialization of boot layer
 java.lang.module.FindException: Module javafx.controls not found
-> この記事の内容および手順で解決できると思います[^3]
記事の手順で上記エラーが解決できなかった場合，デフォルトで用意されるJavaFX SDKとUser Librariesがプロジェクト内に両方存在している可能性があるので，その場合はデフォルトで用意されるJavaFX SDKを削除して試してみてください

## おわりに
MacにJavaFXの環境構築を行う方法をまとめました．
動作しなかった点などありましたらコメントいただけるとありがたいです．

また，この方法で解決できた方はいいね等よろしくおねがいします．

## 参考にしたサイト
[^1]: https://qiita.com/tarosa0001/items/05ac653a091b7d1290f9#
[^2]: https://style.potepan.com/articles/15319.html
[^3]: https://stackoverflow.com/questions/53795661/javafx-modular-application-java-lang-module-findexception-module-javafx-contro