新しいJava 8プロジェクトでjavafx関連クラスを使用しようとすると、Eclipseからアクセス制限エラーが発生します。これまでのところ、私が見つけた唯一の「解決策」は、アクセス制限を無視するようEclipseに指示することですが、これには満足していません。エラーの例:
Access restriction: The type Pane is not accessible due to
restriction on required library C:\Program Files\Java\jre8_0\lib\ext\jfxrt.jar
Java 8のEclipse JDTパッチでEclipse Keplerを使用しています。
これは、JavaFXがJavaSE実行環境の一部ではないという事実に関連する問題のようです。
http://en.wikipedia.org/wiki/JavaFX javaFXはJavaSEの一部であるため、私は今非常に混乱しています。 EclipseがjavaSEの一部であることを認識していない可能性はありますか?
Eclipseの観点からは、JavaFXは拡張クラスパスから来ており、すべてのJava8 VM(ibm!など)で利用できないため、エラーは完全に正しいです。
概説したように、アクセスルールまたはIMHOを追加することでこれらの警告を抑制することができます。最適なソリューションは、これを自動的に行うe(fx)clipseをインストールすることです。
http://efxclipse.bestsolution.at/install.html から1つのパッケージですべてを取得できます。
ここでもう1つ答えを追加します。これは、私が最も最小限のアプローチだと思うものを提供するためです。 Eclipseのセットアップには、e(fx)clipseがインストールされています。これにより、これに対する1つの修正が提供され、JavaFXアプリケーションを作成する場合にほぼ確実に必要な多くの有用な開発機能が提供されます。これがおそらく最も実用的なアプローチです。何らかの理由でそのプラグインが必要ない場合、この回答で概説されている解決策は、他の副作用の最小量で問題を解決します。
他の回答で指摘されているように、Eclipseはデフォルトでjre/lib/extディレクトリ内のjarファイル内のクラスへのアクセスを許可しません。これらはすべてのJavaプラットフォームに存在するとは限りません。 JavaFX 8アプリケーションを作成している場合、lib/extの場所でjfxrt.jarが利用可能なプラットフォームにいることを想定しています。
そのため、minimal修正は、このjarファイル(およびこのjarファイルのみ)のクラスへのアクセスを許可することです。これを行うには、プロジェクトを右クリックして、プロジェクトプロパティダイアログを表示します。左ペインで[ビルドパス]を選択し、[ライブラリ]タブを選択します。 「JRE System Library」エントリが表示されます。そのエントリを展開すると、「アクセスルール」サブエントリが表示されます。
[アクセスルール]エントリを選択し、[編集]をクリックします。 「追加」をクリックします。
[解像度]で[アクセス可能]を選択し、[ルールパターン]でjavafx/**
と入力します。
[OK]をクリックして、すべてのダイアログを終了します。
この設定は、javafx.
で始まるパッケージのすべてのクラスへのアクセスを許可しますが、他のすべてのクラスのextフォルダーのルールを保持し、その意味で「最小限」です。
繰り返しますが、おそらくあなたが本当にやりたいことはe(fx)clipseプラグインをインストールすることですが、私の知る限り、これはEclipseのセットアップに最も副作用の少ないソリューションです。
JDKを削除してビルドパスに再度追加することで問題を解決しました。ただし、これがなぜ機能するのかを聞かないでください。
簡単な方法は、e(fx)clipse-JavaFXをサポートするEclipseのプラグインをインストールすることです。
元の情報はここにあります: https://www.Eclipse.org/efxclipse/install.html#for-the-lazy
Eclipseプロジェクトのビルドパスを慎重に使用することで、この問題を解決しました。
これにより、Eclipseはjfxrt.jarを通常のサードパーティJARファイルとして認識します。 JREシステムライブラリのエントリよりも優先されるように、順序は重要です。実際のJARファイルと同じですが、Eclipseはそれを異なって見ています。
Jfxrt.jarの「エクスポート」バージョンを使用しないように、実行構成を変更することもできます。ただし、実際的にはこれで違いはありません。
これをJava8とEclipse Lunaで行いました。しかし、プリンシパルは、JavaとEclipseの任意の組み合わせで動作するはずです。
次の手順を実行します:
「ライブラリ」タブで「インストールフォルダから」jfxrt.jarを「外部JARファイル」として追加します。
[注文/エクスポート]タブで、このjfxrt.jarがリストの最初にあることを確認します。
これは私のために働いた。
同じ問題がありました。私はJames_Dのソリューションを使用しましたが、彼の正確なソリューションはうまくいきませんでした。しかし、**/javafx/**
の代わりにjavafx/**
を使用すると、問題が解決しました。それが役に立てば幸いです。
PS:これをJames_Dの解決策の下でコメントとして投稿しますが、登録したばかりで、そうするのに十分な「評判」がありませんでした。
James_Dがすでに提案したように、クラスパスファイルにアクセスルールを追加しました。 e(fx)clipseプラグインは、css検証のバグがあるため、当面アンインストールしました( Eclipse Marsでcss警告「不明なプロパティ」を無効にする方法 を参照)。
JREコンテナのクラスパスファイルのエントリは次のとおりです。
<classpathentry kind="con" path="org.Eclipse.jdt.launching.JRE_CONTAINER/org.Eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
<accessrules>
<accessrule kind="accessible" pattern="javafx/**"/>
<accessrule kind="accessible" pattern="com/Sun/javafx/**"/>
</accessrules>
</classpathentry>
ステップ-1:jfxrt.jarに移動します。 C:\ Program Files\Java\jre1.8.0_111\lib\ext
ステップ-2ファイルjfxrt.jarをコピーします
ステップ-3:Eclipseに移動し、次のような新しいフォルダーを作成します。[jfxrt.jarファイルを配置するためのフォルダー名libの作成] [2] [2]: https://i.stack.imgur.com /YsJ5S.png
ステップ-4:libフォルダーを選択し、CTRL + Vを押してjfxrt.jarを貼り付けます[jfxrt.jarを貼り付け] [1] [1]: https://i.stack.imgur.com/Ljogu .png
ステップ5:jfxrt.jarを右クリックして、ビルドパスとして設定します。