2010-11-25 12 views
5

jbossで問題が発生しました。私は、サーバーに私の.warを展開しようとすると、私はライブラリの衝突があることはかなり明白であるクラスキャスト例外:com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

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ファイルを削除しました。私は再展開しようとすると、今、私は、

XMLパーサを見つけることができないことを不平を言っている
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 

をこの新しいエラーが発生します。

私の質問は誰でも解決策が何であるかを知っています。 xercesパッケージを含まないjaxp jarファイル

更新

hereを提案し、今私は新しいエラーを持っている、のSAXParserFactoryが含まれています、私は削除した瓶の1からクラス:(

+0

こんにちはを参照してください。JBossの-classloading.xml

を定義する必要がありますが示唆され、今、私は新しいエラー、 java.lang.NoClassDefFoundErrorのを持っているように、私がやった:クラスはcom.sunを初期化できませんでした。 xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl SaxParserFactory :( – Ozyman

+0

が新しく削除されたJAR上にある可能性のある情報はどれですか? –

答えて

2
ある

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

として私がやりました

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

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

+0

以前削除したjarファイルはjaxpでした私はjaxp-api.jarを削除しました。 xParserFactoryが存在し、jaxp-apiを持つすべてのjarファイルのうち。 – Ozyman

+0

あなたのプロジェクトでこれらのJARをどのように継承したかを検証することは良い考えです。特にSun JDKを使用しているときは、XMLを解析するためにjaxp-ri-1.4.1.jarまたはjaxp-api.jarのコピーは必要ありません。 JDK/JRE自体には、必要なAPIと、使用できるパーサー実装があります。せいぜい、ディストリビューションのいくつかのJARがこの問題(特にXerces 2.xのxml-apis.jar)を引き起こすため、Xercesライブラリ(必要なJARのみ)が必要になります。 –

+0

プロジェクトにはmavenを使用します。だから、それは含まれているはずです。意外にも、pom.xmlにはこれらのjarファイルの記述はありません。私たちのプロジェクトはwebservicesプロジェクトなので、マーシャリングのためにそれらが必要かもしれないと思っていました。jaxp- *ファイルを削除したときに何が起こるかを試してみます。すべての方法のヒントをお寄せいただきありがとうございます。 – Ozyman

2

私は推測しています...あなたはJBoss 5.1を使用しています。もしそうなら、それはxmlパーサとクラスローディングの問題です。あなたがhttp://www.coderanch.com/t/523519/JBoss/Casthttp://www.mastertheboss.com/jboss-application-ser...oss-5-classloading-issues.html

+0

はい、おそらくクラスローダーの問題であるはずです。 –

+0

もう1つ:jboss-classloading.xmlを使用することは簡単で、問題を非常に迅速に解決できますが、アプリケーションをより慎重に分析する必要があることもあります。 libs/class copnflictの問題ではないことを確認する必要があります。それは簡単ではありませんが、もしそうでないと困ってしまうかもしれません。クラスローディングの問題により、奇妙なエラーが発生します。例えば。私の場合、私はアプリケーションを爆発的な戦争として展開することができましたが、アーカイブされた戦争として展開することはできませんでした。何が解決策になりましたか? jboss-classloading.xmlといくつかのlibsを削除する:) – patrycja

関連する問題