5

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パッケージを含まないjaxpjarファイルはありますか?

アップデート

ここで提案されているように実行しましたが、新しいエラーが発生しました。

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

これは、SaxParserFactoryを含む削除したjarの1つからのクラスです:(

4

2 に答える 2

2

間違ったJARを削除したようです。元のClassCastExceptionは、SAXParserFactoryImpl(SAXParserFactoryのサブタイプ)のインスタンスがSAXParserFactoryにキャストされているときに報告されました。

例外は、JVMにロードされているSAXParserFactoryImplの2つのインスタンスではなく、SAXParserFactoryの2つのインスタンスがあるという事実が原因である可能性が高くなります。キャスト時に、別のクラスローダーによってロードされたSAXParserFactoryが返され、例外が発生しました。したがって、修正は、SAXParserFactoryのバージョンが競合するクラスパス内のJARを識別することです。Commons Digesterが特定の実装を探している場合、パーサーの実装自体を削除することは賢明ではないかもしれません。

于 2010-11-25T14:56:57.887 に答える
2

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

http://www.coderanch.com/t/523519/JBoss/Castおよびhttp://www.mastertheboss.com/jboss-application-ser...oss-5-classloading-issues.htmlを参照してください

于 2011-08-02T10:07:26.727 に答える