15
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2018-02-23

#はじめに
JavaFXを利用しようとした時に、以下のようなエラーが出てしまった。
「アクセス制限: The type '?' is not API」(省略)
鬱陶しいので対策を講じることとした。(記事はJavaFXでのこと中心です)
※検索結果をまとめたまでのものです。

#対策方法

##ビルド・パスの構成を変える (積極的,たぶんいちばん楽な対処法)
理由はわからないけどなぜか直る。

  1. プロジェクトを選択し右クリックをして、「ビルド・パス」→「ビルド・パスの構成」
        この画面への別の行き方(楽)
  2. 「JRE システム・ライブラリー」を選択した状態で、右側の「編集」
  3. 表示された画面のラジオボタンで、「代替JRE」または「ワークスペースのデフォルトJRE」を選択 (プルダウンで適切なもの, ex: jdk1.8.0_121)
        ※プルダウンがない時は「注意」を参照
  4. 「完了」, 「適応して閉じる」

###注意
もしもプルダウンに何も表示されていないのならば、自分でJDKを設定しなければならない。(開発をするならJREではなく、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. 「適応して閉じる」

参考元: Using JavaFX in JRE 8, “Access restriction” error - StackOverflow
参考: Eclipse javaFXのアクセス制限について - 俺だけの秘密基地 IT系 技術局
##警告を消す (消極的,表面的対処法)
ただ警告を非表示にするだけで好きじゃない。しかし、一括で消えるという利点がある。

  1. 画面上部より、「ウィンドウ」→「設定」
  2. 表示された画面より、「Java」→「コンパイラー」→「エラー/警告」
  3. 同様に、「使用すべきでない制限された API」→「禁止された参照 (アクセス・ルール)」の設定を、「無視」に変更。
  4. 画面下より、「適応して閉じる」
  5. 「フル・ビルドを行うか」を尋ねられるので、「はい」

##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番目は、ブログ移転されたようなので改善しました: 旧リンク)

15
8
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?