6

このエラーは奇妙で、私はそれをあまり理解できません。EclipseRCP 3.5.1、Java SE 1.6 update 16をインストールし、SWT3.5に切り替えました。新しいプロジェクトを作成し、依存関係を設定して、コンパイルしようとしました。インポートするときは、次を使用します。

import com.sun.org.apache.xml.internal.serialize.OutputFormat;
import com.sun.org.apache.xml.internal.serialize.XMLSerializer;

エラーが発生します:

Access restriction: The type XMLSerializer is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar.

私はすでにそれをグーグルで検索しました、ここでいくつかの応答を読んでください..そして問題はまだそこにあります。面白いことに、以前のEclipseRCP(バージョン:3.4.2)を使用した場合、この問題は発生しません。3.4.2バージョンは同じJREバージョンを使用しており、SWTバージョンをテストしました。正常に動作します。問題は新しいIDEのプラグインに依存していると思います。何か案は?

PS私はこの記事を見つけました。しかし、必要がなければ、コードを変更するのは好きではないか、変更したくありません。最初に問題の原因は何ですか、そして解決策は次のとおりです。

4

3 に答える 3

10

Eclipseコンパイラのデフォルト構成は制限が厳しすぎます。Java->コンパイラ->エラー/警告の設定を開き、「非推奨および制限付きAPI」で「禁止された参照(アクセスルール)」の設定をエラーから警告または無視に変更することで、これを緩めることができます。

ただし、問題は、com.sun.-packageのクラスを本当に使用したいかどうかです。これは、これらのクラスが別のベンダーのVMまたはSunの新しいVMで使用できることが保証されていないためです。

于 2009-10-04T23:01:12.877 に答える
1

同様の問題に遭遇し、Eclipse 設定が機能しないように見える人 (たとえば、今の私) へのメモ:プロジェクト固有の設定で「禁止された参照」が「エラー」に設定されていないことを確認してください。 .

于 2009-11-16T12:24:03.027 に答える
1

将来これに出くわした人のための参考のために、この古いスレッドに投稿しています。

同じ問題が発生しましたが、1.6 コンパイラを使用しているときにコンパイラ準拠レベルを 1.5 に設定していたことが原因でした。コンプライアンス レベルが 1.6 よりも低く設定されている場合、1.6に含まれるすべての利点 (javax.activationおよび上記の xml 機能の一部など) は、1.6 コンパイラによって「制限」されます。私の場合、問題を解決するには、適切なライブラリ (たとえば、activation.jar ) を追加する必要がありました。

于 2010-10-08T19:26:45.977 に答える