2009-10-04 7 views
6

このエラーは奇妙なことです。 EclipseRCP 3.5.1、 Java SE 1.6アップデート16をインストールし、SWT 3.5に切り替えました。私は新しいプロジェクトを作成し、依存関係を設定してコンパイルしようとしました。次を使用し、インポートしようとした場合:Eclipse 3.5.1コンパイラエラー:必要なライブラリ../rt.jarの制限によりOutputFormat型にアクセスできません

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. 

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

P.S.私はこれを見つけた article。しかし、私は好きではない、またはコードを変更したい場合は、私はする必要はありません。最初に問題の原因は何か、その解決策が続きます。

答えて

10

Eclipseコンパイラのデフォルト設定はあまりにも制限されています。 Java - > Compiler - > Errors/Warningsのプリファレンスを開き、 "Deprecated and restricted API"の下にある "Forbidden reference(access rules)"の設定をエラーから警告または無視に変更して緩めることができます。

com.sun.-packageのクラスを実際に使用したい場合は、別のベンダーのVMまたはSunの新しいVMでこれらが使用可能であるとは限りません。

+0

はい、私は問題を回避するためにEclipse設定を認識していますが、同じ設定が古いRCPバージョンにあったため、問題はありませんでした。私は前にそれを聞いたことがありません。なぜ、そのパッケージcom.sunです。彼の使用が推奨されていない場合でも存在しますか? – hypercube

+0

インポートの目的は、JDK1.6にXMLパーサーが組み込まれていることを理解しているので、XMLファイルを読み書きすることでした。com.sun。*は使用しないでください。 – hypercube

+0

これはパブリックAPI(おそらくJAXBなど)によって内部的に使用されます。クラスが直接必要な場合は、代わりにApache Xerces-Jをライブラリとして追加し、org.apache.xml.serialize.OutputFormatクラスとorg.apache.xml.serialize.XMLSerializerクラスを代わりに使用する必要があります。 – jarnbjo

1

同様の問題を抱えていて、Eclipse設定を動作させることができない人のためのメモ(例:私だけ):禁止されている参照が「エラー」に設定されていないことを確認してください。プロジェクト固有のの設定。

1

私はこの古いスレッドにこれを投稿しています。

私は同じ問題を抱えていましたが、1.6コンパイラを使用しているときにコンパイラの準拠レベルを1.5に設定していたために発生しました。コンプライアンスレベルが1.6未満に設定されている場合、1.6に含まれるすべての機能(javax.activation、および上記のXML機能の一部)は1.6コンパイラによって「制限」されます。私の場合、問題を取り除くために適切なライブラリ(例:activation.jar)を追加するだけでした。

関連する問題