私は以前からいくつかのレガシーコードを変更しようとしており、次の種類のエラーを取得しています:
アクセス制限:タイプ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に異なる/古いバージョンが含まれていないことがわかります上記のクラスの。
このエラーが何であり、これを修正する方法を教えてくれる人はいますか?
事前にご協力いただきありがとうございます。
オリ
私は同様の何かに遭遇しました、警告の原因は、ワークスペースJREの一部としてインストールされているがパブリックJavaの一部ではない内部com.Sun
パッケージを使用しないようにするEclipseだと思いますAPI。
Justinが答えで言っているように、コンパイラの設定を変更すると警告が隠される可能性があります。よりきめ細かいアプローチは、ビルドパスを変更して、問題のパッケージへのアクセスを明示的に許可することです。
"com/Sun/xml/internal/**"
に設定します。このアクセスルールを追加した後、これらの警告なしでプロジェクトをビルドする必要があります。
優れた答えはすでにオンサイトで提供しています here 。
以下の要約を参照してください。
真の解決策ではありませんが、提案された解決策のどこでも、Eclipseにそれらがエラーではないことを伝えるだけでした。変更するには、[プロパティ]-> Javaコンパイラ->エラー警告->非推奨および制限されたAPI->禁止された参照(アクセスルール)、エラーから警告または無視に変更します。
私はこれらの手順でこの問題を解決しました:プロジェクトを展開し、「JRE System Library」を右クリックして「プロパティ」を選択し、3番目のオプション「Workspace default JRE」を選択して、「OK」をクリックします。それがあなたにも役立つことを願っています
Eclipseの場合Project -> properties -> Java Build Path -> libraries
既存のJREシステムライブラリを削除してから、Add Library -> JRE System library -> next -> ok
エラーは削除されます。
プラグインが別のプロジェクトに依存していて、そのマニフェストファイルでいくつかのパッケージがエクスポートされたときに、同じ問題が発生しました。アクセスルールを変更する代わりに、必要なパッケージをExport-Packageセクションに追加することで問題を解決できました。これにより、パッケージが合法的に見えるようになります。 Eclipseは、実際には「アクセス制限」エラーマーカーでこの修正を提供します。
Javaプログラムを実行するEclipse環境で、次の手順を実行します。
この問題に対処する方法は他の答えとは異なるため、この質問に答えています。エクスポートするプラグインの名前をリファクタリングしたときにこの問題が発生しました。最終的には、以下を修正/変更する必要がありました。
これでうまくいきましたが、走行距離は異なる場合があります。
プロジェクトファセットを1.7に変更しただけで機能しました。