#はじめに
JavaFXを利用しようとした時に、以下のようなエラーが出てしまった。
「アクセス制限: The type '?' is not API」(省略)
鬱陶しいので対策を講じることとした。(記事はJavaFXでのこと中心です)
※検索結果をまとめたまでのものです。
#対策方法
##ビルド・パスの構成を変える (積極的,たぶんいちばん楽な対処法)
理由はわからないけどなぜか直る。
- プロジェクトを選択し右クリックをして、「ビルド・パス」→「ビルド・パスの構成」
この画面への別の行き方(楽) - 「JRE システム・ライブラリー」を選択した状態で、右側の「編集」
- 表示された画面のラジオボタンで、「代替JRE」または「ワークスペースのデフォルトJRE」を選択 (プルダウンで適切なもの, ex: jdk1.8.0_121)
※プルダウンがない時は「注意」を参照 - 「完了」, 「適応して閉じる」
###注意
もしもプルダウンに何も表示されていないのならば、自分でJDKを設定しなければならない。(開発をするならJREではなく、JDKの方が望ましいと思う)
- 画面上部より、「ウィンドウ」→「設定」
- 表示された画面より、「Java」→「インストール済みのJRE」
- 画面左の「追加」
- 「標準 VM」を選択し、「次へ」
- 「JRE ホーム」: JREのホームディレクトリを入力する。(ex: C:\Program Files\Java\jdk1.8.0_121)
- 「JRE 名」: 任意の名前を入力する。(ex: jdk1.8.0_121)
- 「デフォルトのVM 引数」: 空欄でよい。
- 「完了」, 「適応して閉じる」
####この画面への別の行き方(楽)
プロジェクトを選択し右クリックをして、一番下の「プロパティ」→「ライブラリー」から 2. に行っても良い。
##アクセス許可を行う (積極的,根本的対処法)
JavaFXなどの基本APIとしてEclipseで扱われないAPIは自分でアクセス許可を行う必要があるようだ。
以下の方法を取ることで、アクセス可能APIとして扱われるようにする。しかし、プロジェクト毎にしか指定できない。
- プロジェクトを選択し右クリックをして、「ビルド・パス」→「ビルド・パスの構成」
- 「JRE システム・ライブラリー」の左の△→「アクセス・ルール」
- 選択した状態で、右側の「編集」
- 「追加」
- 「レゾリューション」: 「アクセス可能」を選択し、「ルール・パターン」: 「?/**」(?は目的のAPI, 入力例: 「javafx/**」)
- 「OK」, 「OK」
- 「適応して閉じる」
参考元: Using JavaFX in JRE 8, “Access restriction” error - StackOverflow
参考: Eclipse javaFXのアクセス制限について - 俺だけの秘密基地 IT系 技術局
##警告を消す (消極的,表面的対処法)
ただ警告を非表示にするだけで好きじゃない。しかし、一括で消えるという利点がある。
- 画面上部より、「ウィンドウ」→「設定」
- 表示された画面より、「Java」→「コンパイラー」→「エラー/警告」
- 同様に、「使用すべきでない制限された API」→「禁止された参照 (アクセス・ルール)」の設定を、「無視」に変更。
- 画面下より、「適応して閉じる」
- 「フル・ビルドを行うか」を尋ねられるので、「はい」
##Gradleにおいてのエラー対処
以下の方々が書いてくださっています!(追記: 2019年9月21日)
・【JavaFX】Eclipseのアクセス許可をbuild.gradleに書く方法
・Gradle で JavaFX をコンパイルできるようにする
##参考元
・EclipseでJavaFXのコード補完が機能しないときの対処方法
・【トラブル】【Java】エラー「Access restriction:The type XX is not API」が表示される
・EclipseでJavaFXを使おうとするとアクセス制限とでる問題の解決方法
・【Java FX】 Java FX ~ 入門編 ~ - e(fx)clipseを使ったインストールっぽい
(上から2番目は、ブログ移転されたようなので改善しました: 旧リンク)