Edited at

【JavaFX】Eclipseで、アクセス制限: The type '?' is not API(? ex: JavaFX)と出た時の対処法まとめ


はじめに

JavaFXを利用しようとした時に、以下のようなエラーが出てしまった。

「アクセス制限: The type '?' is not API」(省略)

鬱陶しいので対策を講じることとした。(記事はJavaFXでのこと中心です)

※検索結果をまとめたまでのものです。


対策方法


ビルド・パスの構成を変える (積極的,たぶんいちばん楽な対処法)

理由はわからないけどなぜか直る。

1. プロジェクトを選択し右クリックをして、「ビルド・パス」→「ビルド・パスの構成」

    この画面への別の行き方(楽)

2. 「JRE システム・ライブラリー」を選択した状態で、右側の「編集」

3. 表示された画面のラジオボタンで、「代替JRE」または「ワークスペースのデフォルトJRE」を選択 (プルダウンで適切なもの, ex: jdk1.8.0_121)

    ※プルダウンがない時は「注意」を参照

4. 「完了」, 「適応して閉じる」


注意

もしもプルダウンに何も表示されていないのならば、自分でJDKを設定しなければならない。(JDKの方が望ましいと思う)

1. 画面上部より、「ウィンドウ」→「設定」

2. 表示された画面より、「Java」→「インストール済みのJRE」

3. 画面左の「追加」

4. 「標準 VM」を選択し、「次へ」

5. 「JRE ホーム」: JREのホームディレクトリを入力する。(ex: C:\Program Files\Java\jdk1.8.0_121)

6. 「JRE 名」: 任意の名前を入力する。(ex: jdk1.8.0_121)

7. 「デフォルトのVM 引数」: 空欄でよい。

8. 「完了」, 「適応して閉じる」


この画面への別の行き方(楽)

プロジェクトを選択し右クリックをして、一番下の「プロパティ」→「ライブラリー」から 2. に行っても良い。


アクセス許可を行う (積極的,根本的対処法)

JavaFXなどの基本APIとしてEclipseで扱われないAPIは自分でアクセス許可を行う必要があるようだ。

以下の方法を取ることで、アクセス可能APIとして扱われるようにする。しかし、プロジェクト毎にしか指定できない。

1. プロジェクトを選択し右クリックをして、「ビルド・パス」→「ビルド・パスの構成」

2. 「JRE システム・ライブラリー」の左の△→「アクセス・ルール」

3. 選択した状態で、右側の「編集」

4. 「追加」

5. 「レゾリューション」: 「アクセス可能」を選択し、「ルール・パターン」: 「?/**」(?は目的のAPI, 入力例: 「javafx/**」)

6. 「OK」, 「OK」

7. 「適応して閉じる」

参考元: https://stackoverflow.com/a/32062263


警告を消す (消極的,表面的対処法)

ただ警告を非表示にするだけで好きじゃない。しかし、一括で消えるという利点がある。

1. 画面上部より、「ウィンドウ」→「設定」

2. 表示された画面より、「Java」→「コンパイラー」→「エラー/警告」

3. 同様に、「使用すべきでない制限された API」→「禁止された参照 (アクセス・ルール)」の設定を、「無視」に変更。

4. 画面下より、「適応して閉じる」

5. 「フル・ビルドを行うか」を尋ねられるので、「はい」

参考元:

https://blogs.osdn.jp/2016/04/02/JavaFX.html

https://blogs.yahoo.co.jp/dk521123/34073566.html

http://informationstudent.blog.fc2.com/blog-entry-20.html