我有一個網絡應用程序,它使用Sun的MSV庫。 MSV的所有課程都包含在網絡應用程序WEB-INF/lib
中的罐子中。當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應用程序罐中加載。)我已經看到,我可以排除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社區[論壇](http://community.jboss.org/)中獲得幫助。許多JBoss核心開發人員在社區網站上非常活躍。 – CoolBeans
感謝您的建議。我在http://community.jboss.org/thread/173836上發佈了這個問題,如果我通過JBoss論壇找到了這個問題的解決方案,將會在這裏跟進 – avernet