web-dev-qa-db-ja.com

アクセス制限:必要なライブラリ.. \ jre \ lib \ rt.jarの制限によりアクセスできません

私は以前からいくつかのレガシーコードを変更しようとしており、次の種類のエラーを取得しています:

アクセス制限:タイプHeadersのメソッドcreate(JAXBRIContext、Object)は、必要なライブラリ..\jre\lib\rt.jarの制限によりアクセスできません

これらのインポートステートメントの場合:

import com.Sun.xml.internal.bind.api.JAXBRIContext;
import com.Sun.xml.internal.ws.api.message.Header;
import com.Sun.xml.internal.ws.api.message.Headers;
import com.Sun.xml.internal.ws.developer.WSBindingProvider;

これが意味するものとその修正方法を探していましたが、明確な答えを見つけることができませんでした。いくつかの投稿は、コアJavaディストリビューションの一部として現在利用可能なクラスを実装するいくつかのJARが含まれていることを示唆しているようですが、含まれるJARに異なる/古いバージョンが含まれていないことがわかります上記のクラスの。

このエラーが何であり、これを修正する方法を教えてくれる人はいますか?

事前にご協力いただきありがとうございます。

オリ

76
user567602

私は同様の何かに遭遇しました、警告の原因は、ワークスペースJREの一部としてインストールされているがパブリックJavaの一部ではない内部com.Sunパッケージを使用しないようにするEclipseだと思いますAPI。

Justinが答えで言っているように、コンパイラの設定を変更すると警告が隠される可能性があります。よりきめ細かいアプローチは、ビルドパスを変更して、問題のパッケージへのアクセスを明示的に許可することです。

  1. Java Build Pathプロジェクトプロパティウィンドウのライブラリタブを開きます。
  2. JREシステムライブラリエントリを展開します。
  3. [アクセスルール]を選択し、[編集]ボタンをクリックします。
  4. 表示されるダイアログで[追加]ボタンをクリックします。
  5. 新しいアクセスルールの場合、解像度をAccessibleに設定し、パターンを"com/Sun/xml/internal/**"に設定します。

このアクセスルールを追加した後、これらの警告なしでプロジェクトをビルドする必要があります。

127
Alex

優れた答えはすでにオンサイトで提供しています here

以下の要約を参照してください。

  1. プロジェクトプロパティのビルドパス設定に移動します。
  2. JREシステムライブラリを削除する
  3. 再度追加します。 [ライブラリの追加]を選択し、JREシステムライブラリを選択します。デフォルトは私のために働いた。
79
Abimbola

真の解決策ではありませんが、提案された解決策のどこでも、Eclipseにそれらがエラーではないことを伝えるだけでした。変更するには、[プロパティ]-> Javaコンパイラ->エラー警告->非推奨および制限されたAPI->禁止された参照(アクセスルール)、エラーから警告または無視に変更します。

41
Justin

私はこれらの手順でこの問題を解決しました:プロジェクトを展開し、「JRE System Library」を右クリックして「プロパティ」を選択し、3番目のオプション「Workspace default JRE」を選択して、「OK」をクリックします。それがあなたにも役立つことを願っています

15
Candra

Eclipseの場合
Project -> properties -> Java Build Path -> libraries

既存のJREシステムライブラリを削除してから、Add Library -> JRE System library -> next -> ok

エラーは削除されます。

8
Bilal Ashraf

プラグインが別のプロジェクトに依存していて、そのマニフェストファイルでいくつかのパッケージがエクスポートされたときに、同じ問題が発生しました。アクセスルールを変更する代わりに、必要なパッケージをExport-Packageセクションに追加することで問題を解決できました。これにより、パッケージが合法的に見えるようになります。 Eclipseは、実際には「アクセス制限」エラーマーカーでこの修正を提供します。

5
Val

Javaプログラムを実行するEclipse環境で、次の手順を実行します。

  1. Eclipseのメニューバーのすぐ上の[プロジェクト]をクリックします。
  2. プロパティをクリックします。
  3. ライブラリを選択し、既存のライブラリをクリックして、ウィンドウの右側にある[削除]をクリックします。
  4. プロセスを繰り返して、[ライブラリの追加]をクリックし、[JREシステムライブラリ]を選択して[OK]をクリックします。
1
Leleji Godwin

この問題に対処する方法は他の答えとは異なるため、この質問に答えています。エクスポートするプラグインの名前をリファクタリングしたときにこの問題が発生しました。最終的には、以下を修正/変更する必要がありました。

  1. 製品ファイルの依存関係、
  2. Plugin.xmlの依存関係(およびインポートされたパッケージのダイアログを使用して暗黙的にインポートされないことを確認してください)。
  3. 実行構成プラグインタブ。 「実行」..->「実行構成」->「プラグイン」タブ。古いプラグインのチェックを外し、必要なプラグインの追加をクリックします。

これでうまくいきましたが、走行距離は異なる場合があります。

0
Lucas

プロジェクトファセットを1.7に変更しただけで機能しました。

0
Magno C