2016-08-22 81 views
1

如果发现似乎更常发生在人身上的错误,但源在各种原因上有所不同。在测试人员可以测试它的服务器上部署该项目之后,在某些地方,当在应用程序中执行任务时,此错误将弹出< NoClassDefFoundError>。在质量保证服务器上部署时出现NoClassDefFoundError

现在iv在互联网上阅读了很多,对一些人来说,它发生的原因是有一个jar匹配到一些人,因为他们没有在他们的环境中的某些权限有些缺少一些依赖。但对我来说,情况确实如此。

或者我只是感到沮丧,我不知道说实话。所以,希望有人看到的东西可能已经跳过了我的视线什么的堆栈跟踪我转身栈得救的希望溢出....

现在我知道,这个类位于< JAXB的API >罐子。在项目pom中它将使用2.2.2版本。我甚至使用在线反编译器对jar进行了反编译,以检查jar。该类存在。而在我的本地环境中,它工作正常。只有在服务器上部署后才会发生这种情况。

谢谢!对不起,如果我的问题不清楚,我会编辑它以更清楚地表明是否可能。

堆栈跟踪如下:

java.lang.NoClassDefFoundError: com/sun/xml/bind/DatatypeConverterImpl$CalendarFormatter 
    at com.sun.xml.bind.DatatypeConverterImpl._printDate(DatatypeConverterImpl.java:482) 
    at com.sun.xml.bind.DatatypeConverterImpl.printDate(DatatypeConverterImpl.java:478) 
    at javax.xml.bind.DatatypeConverter.printDate(DatatypeConverter.java:680) 
    at org.w3._2001.xmlschema.Adapter1.marshal(Adapter1.java:20) 
    at org.w3._2001.xmlschema.Adapter1.marshal(Adapter1.java:7) 
    at com.sun.xml.bind.v2.runtime.reflect.AdaptedAccessor.get(AdaptedAccessor.java:72) 
    at com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.writeLeafElement(TransducedAccessor.java:252) 
    at com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty.serializeBody(SingleElementLeafProperty.java:121) 
    at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:157) 
    at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:189) 
    at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:316) 
    at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:323) 
    at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:72) 
    at com.sun.xml.bind.v2.runtime.property.SingleReferenceNodeProperty.serializeBody(SingleReferenceNodeProperty.java:111) 
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340) 
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696) 
    at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:152) 
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340) 
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696) 
    at com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:65) 
    at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:168) 
    at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:155) 
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340) 
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696) 
    at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:152) 
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340) 
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696) 
    at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:152) 
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340) 
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696) 
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:264) 
    at com.sun.xml.bind.v2.runtime.BridgeImpl.marshal(BridgeImpl.java:100) 
    at com.sun.xml.bind.api.Bridge.marshal(Bridge.java:141) 
    at com.sun.xml.ws.message.jaxb.JAXBMessage.writePayloadTo(JAXBMessage.java:321) 
    at com.sun.xml.ws.message.AbstractMessageImpl.writeTo(AbstractMessageImpl.java:142) 
    at com.sun.xml.ws.encoding.StreamSOAPCodec.encode(StreamSOAPCodec.java:109) 
    at com.sun.xml.ws.encoding.SOAPBindingCodec.encode(SOAPBindingCodec.java:284) 
    at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:146) 
    at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:94) 
    at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:89) 
    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.client.Stub.process(Stub.java:222) 
    at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:135) 
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:109) 
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89) 
    at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:118) 
    at com.sun.proxy.$Proxy653.majQuittances(Unknown Source) 
    at com.satec.dao.winpass.WinpassPolicyDAO.submitQuittance(WinpassPolicyDAO.java:45) 
    at com.satec.service.WinpassService.submitPolicyLifecycle(WinpassService.java:505) 
    at com.satec.service.WinpassService.submitPolicyLifecycle(WinpassService.java:330) 
    at com.satec.service.WinpassHelper.submitPolicyLifecycle(WinpassHelper.java:96) 
    at com.satec.manager.SANewPolicyAvoidanceBP.executeAvoidance(SANewPolicyAvoidanceBP.java:51) 
    at com.satec.manager.SANewPolicyAvoidanceBP.save(SANewPolicyAvoidanceBP.java:70) 
    at com.satec.manager.SANewPolicyAvoidanceBP$$FastClassByCGLIB$$54f56c86.invoke(<generated>) 
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191) 
    at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
    at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:67) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621) 
    at com.satec.manager.SANewPolicyAvoidanceBP$$EnhancerByCGLIB$$539f001e.save(<generated>) 
    at com.albiran.ser.newPolicyAvoidance.NewPolicyAvoidanceServlet.handleBusinessRequest(NewPolicyAvoidanceServlet.java:64) 
    at com.albiran.ser.commun.AjaxTransaction.handleBusinessRequest(AjaxTransaction.java:17) 
    at com.albiran.ser.commun.AjaxTransaction$$FastClassByCGLIB$$46480d71.invoke(<generated>) 
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191) 
    at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621) 
    at com.albiran.ser.commun.AjaxTransaction$$EnhancerByCGLIB$$9840595b.handleBusinessRequest(<generated>) 
    at com.albiran.ser.commun.AjaxServlet.executeMethod(AjaxServlet.java:208) 
    at com.albiran.ser.commun.AjaxServlet.handleBusinessRequest(AjaxServlet.java:444) 
    at com.albiran.ser.commun.AjaxServlet.service(AjaxServlet.java:576) 
    at sun.reflect.GeneratedMethodAccessor2997.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) 
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436) 
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:585) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:369) 
    at com.albiran.framework.license.LicenseCheckingFilter.doFilter(LicenseCheckingFilter.java:59) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    at com.albiran.acces.data.acces.AlbiranSessionRequestFilter.doFilter(AlbiranSessionRequestFilter.java:64) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:168) 
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) 
    at com.albiran.framework.license.LicenseCheckingFilter.doFilter(LicenseCheckingFilter.java:59) 
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) 
    at org.apache.coyote.ajp.AbstractAjpProcessor.process(AbstractAjpProcessor.java:872) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 
+0

您正在使用哪个Tomcat版本? JDK?此测试服务器是否部署了其他应用程序?如果是这样,可能任何其他现有的应用程序有以前加载此jar /类的另一个版本? – jlumietu

+0

NoClassDefFoundError异常,它的原因非常清楚,但要找出您的案例中的原因。需要更多信息,比如环境细节,当它作为普通方法调用的一部分或作为创建新实例的一部分引发时。 –

+0

服务器是Jetty,我们正在使用JDK 1.7。对不起,我似乎忘了错误的第一行。是的,它是唯一在服务器上运行的。 –

回答

1

明白JAXB附带你的JDK,如果你使用的是Java 6或更高版本是很重要的。

通常情况下,您永远不会在您的pom.xml文件中包含JAXB API jar或JAXB实现,因为您已经可以通过JDK访问它们。这样做会导致特殊的类加载问题,例如您所描述的问题。

如果需要使用JAXB 2.2,则必须使用Java 8

的Java 6和7配备了2.1 JAXB建立和执行代码。

现在,如果你的代码是在一个全栈的Java EE 6(或更新版本)服务器,如WildFly,GlassFish的,TomEE等运行上面是不是真的

这些都是规范的限制,以提供适当集成的JAXB 2.2实现。

在这种情况下,您可以针对JAXB 2.2 API进行构建。你仍然应该排除任何实现。

如果你想使用类似的Tomcat与JAXB 2.2,那么你需要使用它在Class Loader HOW-TO,这是建立在Java Endorsed Standards Override Mechanism描述endorsed目录中安装JAXB 2.2实现到Tomcat。 Jetty也需要类似的解决方案。