私はSunのMSVライブラリを使用するWebアプリケーションを持っています。 MSVのすべてのクラスは、WebアプリケーションWEB-INF/lib
のjarファイルに含まれています。 JBossの7にこのアプリを展開する場合、私は次の例外を取得:JBoss AS 7で間違ったモジュール依存関係をデバッグする方法は?
java.lang.NoClassDefFoundError: Could not initialize class com.sun.msv.datatype.xsd.AnyURIType
at com.sun.msv.datatype.xsd.DatatypeFactory.getTypeByName(DatatypeFactory.java:195)
at com.sun.msv.datatype.xsd.ngimpl.DataTypeLibraryImpl.getType(DataTypeLibraryImpl.java:32)
at com.sun.msv.datatype.xsd.ngimpl.DataTypeLibraryImpl.createDatatypeBuilder(DataTypeLibraryImpl.java:36)
at com.sun.msv.reader.trex.ng.DataState.startSelf(DataState.java:58)
at com.sun.msv.reader.State.init(State.java:153)
at com.sun.msv.reader.GrammarReader.pushState(GrammarReader.java:576)
at com.sun.msv.reader.SimpleState.startElement(SimpleState.java:71)
at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527)
at com.sun.msv.reader.trex.TREXBaseReader.startElement(TREXBaseReader.java:184)
at com.sun.msv.reader.trex.ng.RELAXNGReader.startElement(RELAXNGReader.java:524)
at com.sun.msv.reader.trex.ng.comp.RELAXNGCompReader.startElement(RELAXNGCompReader.java:197)
at orbeon.apache.xerces.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:497)
at orbeon.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:180)
at orbeon.apache.xerces.xinclude.XIncludeHandler.emptyElement(XIncludeHandler.java:1024)
at orbeon.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:275)
at orbeon.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1654)
at orbeon.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:324)
at orbeon.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:845)
at orbeon.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:768)
at orbeon.apache.xerces.parsers.XMLParser.parse(XMLParser.java:108)
at orbeon.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1201)
at com.sun.msv.reader.util.GrammarLoader._loadSchema(GrammarLoader.java:514)
at com.sun.msv.reader.util.GrammarLoader.parse(GrammarLoader.java:325)
at com.sun.msv.reader.util.GrammarLoader.loadSchema(GrammarLoader.java:189)
at com.sun.msv.verifier.jarv.TheFactoryImpl.parse(TheFactoryImpl.java:42)
at com.sun.msv.verifier.jarv.FactoryImpl.compileSchema(FactoryImpl.java:98)
それはクラスcom.sun.msv.datatype.xsd.AnyURIType
を見つけることができないと文句を言いますが、そのクラスは、瓶の一つです。私はスタックトレース上のクラスのいくつかがJBossから来るモジュールから "間違って"ピックアップされたと仮定しているので、WebアプリケーションのWEB-INF/lib
のjarファイルではなく別のクラスローダからロードされます。しかし、それはどちらができますか? (orbeon.apache.xerces
にはApache Xercesの根本的なバージョンがあるので、Webアプリケーションのjarファイルからロードされていることがわかります)jboss-deployment-structure.xml
のいくつかのモジュールを除外することができますが、私は除外すべきですか?見つける方法?
<jboss-deployment-structure>
<ear-subdeployments-isolated>true</ear-subdeployments-isolated>
<deployment>
<exclusions>
<module name="com.sun.xml.bind"/>
<module name="org.codehaus.woodstox"/>
<module name="org.codehaus.jackson.jackson-xc"/>
</exclusions>
</deployment>
</jboss-deployment-structure>
AS7は新品であるため、jbossコミュニティ[forum](http://community.jboss.org/)で助けを得ることができます。多くのJBossコア開発者はコミュニティサイトで非常に活発です。 – CoolBeans
アドバイスありがとうございます。 http://community.jboss.org/thread/173836に質問を投稿し、JBossフォーラムを通じてこの問題の解決策を見つけたら、ここでフォローアップします – avernet