しばらく前のレガシー コードを変更しようとしているのですが、次のようなエラーが発生します。
アクセス制限: 必要なライブラリ ..\jre\lib\rt.jar の制限により、Headers 型のメソッド create(JAXBRIContext, Object) にアクセスできません。
これらのインポート文の場合:
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 のいずれにも上記のクラスの異なるバージョンや古いバージョンは含まれていません。
このエラーが何なのか、またこれを修正するにはどうすればよいのかを教えていただける方はいらっしゃいますか?
すでにご協力いただきありがとうございます。
オリ
ベストアンサー1
私も似たようなことに遭遇しましたが、警告の原因は、com.sun
ワークスペース JRE の一部としてインストールされているが、パブリック Java API の一部ではない内部パッケージの使用を Eclipse が阻止しようとしていることだと思います。
Justin が回答で述べているように、コンパイラ設定を変更すると警告を非表示にすることができます。よりきめ細かなアプローチとしては、ビルド パスを変更して、問題のパッケージへのアクセスを明示的に許可することです。
- Java ビルド パス プロジェクト プロパティ ウィンドウのライブラリ タブを開きます。
- JRE システム ライブラリ エントリを展開します。
- 「アクセスルール」を選択し、「編集」ボタンを押します。
- 表示されるダイアログで「追加」ボタンをクリックします。
- 新しいアクセス ルールでは、解像度を「アクセス可能」に、パターンを「」に設定します
"com/sun/xml/internal/**"
。
このアクセス ルールを追加すると、プロジェクトはこれらの警告なしでビルドされるはずです。