2014-06-11 175 views
0

我正在使用Java6,Apache Tomcat和Jersey RESTful。雖然將XML解密爲JAXB,但我得到以下異常。任何機構都可以幫助我解決這個問題? 注意:此異常不一致。Java中的XMLGregorianCalendar的NoClassDefFoundError

java.lang.NoClassDefFoundError: org/apache/xerces/jaxp/datatype/XMLGregorianCalendarImpl$Parser 
    at org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl.<init>(Unknown Source) 
    at org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl.newXMLGregorianCalendar(Unknown Source) 
    at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$13.parse(RuntimeBuiltinLeafInfoImpl.java:543) 
    at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$13.parse(RuntimeBuiltinLeafInfoImpl.java:517) 
    at com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.parse(TransducedAccessor.java:241) 
    at com.sun.xml.bind.v2.runtime.unmarshaller.LeafPropertyLoader.text(LeafPropertyLoader.java:61) 
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.text(UnmarshallingContext.java:462) 
    at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.processText(StAXStreamConnector.java:367) 
    at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleEndElement(StAXStreamConnector.java:245) 
    at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:214) 
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:358) 
    at com.sun.xml.bind.v2.runtime.BridgeImpl.unmarshal(BridgeImpl.java:120) 
    at com.sun.xml.bind.api.Bridge.unmarshal(Bridge.java:233) 
    at com.sun.xml.ws.server.sei.EndpointArgumentsBuilder$DocLit.readRequest(EndpointArgumentsBuilder.java:517) 
    at com.sun.xml.ws.server.sei.EndpointArgumentsBuilder$Composite.readRequest(EndpointArgumentsBuilder.java:188) 
    at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:243) 
    at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93) 
    at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:598) 
    at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:557) 
    at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:542) 
    at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:439) 
    at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:243) 
    at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:444) 
    at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244) 
    at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:134) 
    at weblogic.wsee.jaxws.HttpServletAdapter$AuthorizedInvoke.run(HttpServletAdapter.java:272) 
    at weblogic.wsee.jaxws.HttpServletAdapter.post(HttpServletAdapter.java:185) 
    at weblogic.wsee.jaxws.JAXWSServlet.doPost(JAXWSServlet.java:180) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    at weblogic.wsee.jaxws.JAXWSServlet.service(JAXWSServlet.java:64) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3498) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(Unknown Source) 
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180) 
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086) 
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173) 

回答

2

我有,你在你的類路徑中添加xerces jar? 如果不是從xerces jar link下載並將其添加到您的項目類路徑中。

請給我反饋。享受:)

+0

我們在類路徑中使用Xercus,因爲這個jar是Maven Dependent中的一個。我知道當我們在ClassPath中有Xercus jar時會出現這個問題。理想情況下,我們不應該在ClassPath中使用這個jar,因爲這個Jar附帶了JDK。我現在的問題是,我們如何避免這種情況? –

+0

你有沒有得到這個@SKC的答案......? – Nitesh

0

這是由於類路徑中有多個xercesImpl.jar。這個jar可能來自你的應用程序,從JDK和servlet容器。 POM的更改解決了這個問題。

<dependency> 
     <groupId>xerces</groupId> 
     <artifactId>resolver</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>xerces</groupId> 
     <artifactId>serializer</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>xerces</groupId> 
     <artifactId>xercesImpl</artifactId> 
     <scope>provided</scope> 
    </dependency> 
1

說明:的Java的新版本在JDK的Xerces庫。這個lib與apache的xerses lib衝突。 即使它說「沒有課程」,這是因爲其中有兩個。 解決方案:檢查您的項目是否爲真,並將其中一個從依賴關係中刪除並構建項目。