Java SE 1.8 jdkシステムライブラリでEclipse keplerを使用していますが、javafxクラスまたはメソッドを使用すると、EclipseはAccess restriction: The type 'TableColumn<?,?>' is not API (restriction on required library 'C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\jfxrt.jar')
のような警告を出します。
ワイルドカード_*
_を使用してライブラリ内のすべてのjarへのアクセスを許可するためにシステムライブラリにアクセスルールを追加しようとしましたが、警告はまだ残っています。プロジェクトの構築にもMavenを使用しています。コードは機能しますが、警告はしつこく、コードを書くときに読みやすさに影響しています。どんな助けでもありがたいです。
編集:私はまた、クラスの最初に@SuppressWarnings("restriction")
を追加しようとしましたが、これはまだ不明な原因を解決せず、私が見る必要のある他のすべての制限警告を隠しています
次の設定でignore
を選択できます。
_Windows -> Preferences -> Java -> Compiler -> Errors/Warnings
(Project) Properties -> Java Compiler -> Errors/Warnings
_
フィルターを使用して_"Forbidden reference"
_を検索します
Forbidden reference (access rules)
:「ignore
」に変更します
簡単な方法は、e(fx)clipse-JavaFXをサポートするEclipseのプラグインをインストールすることです。
元の情報はここにあります: https://www.Eclipse.org/efxclipse/install.html#for-the-lazy
アクセスルールを追加して、javafx/**
へのアクセスを許可します。
この回答もご覧ください: https://stackoverflow.com/a/32062263/106035
私の知る限り、これはEclipseのバグだと思います。これをEclipseでグローバルに構成する方法も見つかりませんでしたが、すべてのプロジェクトでこれをやり直す必要があります。
プロジェクト設定、ビルドパス、ライブラリ、JREに移動します。通常は「ルールが定義されていない」はずの「アクセスルール」をクリックします。新しいルール「Accessible」を追加し、パターン「javafx/**
」を入力します。
これはEclipseにJavaコンパイラーにjavafx.*
が使用を許可されている公式のAPIであることを伝えるため、警告は表示されません。
明らかに、javafxへのアクセスのみを許可する方が、警告を無視するよりもはるかに優れています。
*
が機能しなかったのは、ワイルドカードの定義を読んでいないためです。アクセスルールでは、*
は一度だけ一致します。どの深さでも一致するには**
が必要です。つまり*
はjavafx.SomeClass
へのアクセスを許可しますが、javafx.scene.SomeClass
へのアクセスは許可しません...