0

Eclipse プラグインで xalan を使用すると問題が発生します。
次の方法でファクトリーインスタンスを作成しようとすると:

TransformerFactory tFactory = TransformerFactory.newInstance("org.apache.xalan.processor.TransformerFactoryImpl", null);

エラーが発生します:

javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found
...

プラグイン クラスパスに次のライブラリがあります: xml-apis.jar、xercesImpl.jar、serializer.jar、xalan.jar

次の方法でもクラスインスタンスを作成できません。

c = Class.forName("org.apache.xalan.processor.TransformerFactoryImpl");
Object o = c.newInstance();

ClassNotFoundException を返します

しかし、同じ jar から他のクラスのインスタンスを作成し、Eclipse の外部で同じコードを問題なく実行できます。

何か案が?

編集: TransformerFactory インスタンス化クラス (「class1」など) は、プラグイン クラスパスに追加された外部ライブラリの一部ですが、xalan.jar もプラグイン クラスパスにあります。この「class1」をプラグインに移動すると、プロバイダーが検出され、正常に動作します。

4

1 に答える 1

1

この問題は一度見たことがありますが、どうやって解決したのかよくわかりません。

JDK 1.5 以降を使用している場合は、削除してみてくださいxml-apis.jar。Java 1.4 が XML をサポートするために必要でした。

更新 1


Ok。あなたの質問から、Eclipse プラグインを作成していると推測しました。はいの場合、上記の jar を を使用して追加しましたplugin.xml->Runtime->classpathか? そうでない場合は、そうしてみてください。Eclipse プラグインはそのランタイム -> クラスパス エントリのみを考慮します

更新 2


私には、まだクラスパス解決の問題として表示されます。ただし、なぜそれが起こっているのかを言うのは難しいです。試しに、含まれている jar の順序を変更して確認することもできますplugin.xml->Runtime->classpath

これが役立つことを願っています。

PS: Eclipse プラグインの開発に取り組んでいるので、この記事Eclipse - a tale of two VMs and many classloaders を読むことをお勧めします。

于 2011-01-14T20:12:31.307 に答える