クラスキャストの例外:com.sun.org.apache.xerces.internal.jaxp.documentbuilderfactoryimpl

StackOverflow https://stackoverflow.com/questions/4278213

  •  28-09-2019
  •  | 
  •  

質問

私はJBossで問題に感銘を受けました。 .warをサーバーに展開しようとすると、次のエラーが発生します。

java.lang.ClassCastException: com.sun.org.apache.xerces.internal.jaxp.SAXParserF actoryImpl cannot be cast to javax.xml.parsers.SAXParserFactory

そこから、図書館の衝突があることは非常に明白です。そこで、Jaxp-Ri-1.4.1.jarによって起こったXercesを含むJARファイルを削除しました。今、私が再デプロイをしようとするとき、私はこの新しいエラーを取得します、

java.lang.NullPointerException
    at org.apache.commons.digester.Digester.getXMLReader(Digester.java:944)
    at org.apache.commons.digester.Digester.parse(Digester.java:1765)
    at org.apache.struts.action.ActionServlet.initServlet(ActionServlet.java

XMLパーサーが見つからないと不平を言っている場合。

ですから、私の質問は、誰かが何が解決策になるのかを知っているということです。 XERCESパッケージを含まないJAXP JARファイルはありますか?

アップデート

私は提案されたとおりにしました ここ そして今、私は新しいエラーがあります、

java.lang.NoClassDefFoundError: Could not initialize class com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl

これは、saxparserfactoryを含む私が削除した瓶の1つからのクラスです:(

役に立ちましたか?

解決

間違った瓶を削除したようです。元のClassCastExceptionは、SaxparserFactoryImpl(SaxParserFactoryのサブタイプ)のインスタンスがSaxparserFactoryにキャストされている場合に報告されました。

例外は、SaxParserFactoryImplがJVMにロードされている2つのインスタンスではなく、SaxParserFactoryの2つのインスタンスがあるという事実による可能性が高いです。キャスティングの時点で、別のクラスローダーによってロードされたsaxparserfactoryが返され、例外が発生しました。したがって、修正は、saxparserfactoryの矛盾するバージョンを持つクラスパスの瓶を識別することです。 Commons Digesterが特定の実装を探している場合、パーサーの実装自体を削除することは賢明ではないかもしれません。

他のヒント

私は推測しています...あなたはjboss 5.1を使用しています。もしそうなら、それはXMLパーサーとクラスロードの問題です。 jboss-classloading.xmlを定義する必要があります

見る http://www.coderanch.com/t/523519/jboss/casthttp://www.mastertheboss.com/jboss-application-ser...oss-5-classloading-issues.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top