java.lang.NoClassDefFoundError :: Class present at the given path in Tomcat

15,000

Solution 1

Some clarifications:

  1. NoClassDefFoundError != ClassNotFoundException
  2. NoClassDefFoundError usually means that the JVM once tried to instantiate that class but failed on doing it.

So, some tips:

  • Look for the first exception with that class.
  • Look for some ExceptionInInitializerError before the NoClassDefFoundError
  • Probably the error is in the static blocks of your class.

Solution 2

NoClassDefFound indicates, that everything was okay at compile time, but not at runtime. Maybe some of your .jars are missing on your tomcat. You have to add them to tomcat classpath or copy them to the JRE your tomcat is running on.

here Why am I getting a NoClassDefFoundError in Java? you may find some more information/explanation.

and here Jars not copied to Tomcat's lib folder is a thread about setting up eclipse to deploy dependencies automatically.

Share:
15,000

Related videos on Youtube

Harry K
Author by

Harry K

Updated on June 04, 2022

Comments

  • Harry K
    Harry K almost 2 years

    I am currently facing with a problem where I am running a Jasper report application.

    After invoking a report generation request I am facing java.lang.NoClassDefFoundError

    for an application class e.g. com.abcd.framework.web.servicelocator.ServiceLocator

    I verified that the class is present at the appropriate path under the tomcat/WEB-INF/classes folder.

    I also enabled Tomcat classloader logs with

    JAVA_OPTS = -XX:+TraceClassLoading -XX:+TraceClassUnloading
    

    the relevant log: [Loaded com.abcd.framework.web.servicelocator.ServiceLocator from file:/C:/3.0/tomcat-6.0-Jasper/webapps/jasperserver-pro/WEB-INF/classes/com/abcd/framework/web/servicelocator/ServiceLocator.class]

    I am not able to figure out why, despite the class is successfully loaded, am getting error.

    Appreciate your help

    Thanks

    Added Stack trace below

    > 14:43:28,538 ERROR ManagementServiceImpl,http-30880-1:1294 - caught
    > Throwable exception: java.lang.NoClassDefFoundError: Could not
    > initialize class com.abcd.framework.web.servicelocator.ServiceLocator
    > com.jaspersoft.jasperserver.api.JSException:
    > java.lang.NoClassDefFoundError: Could not initialize class
    > com.abcd.framework.web.servicelocator.ServiceLocator  at
    > com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:497)
    >   at
    > com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.executeReportUnitRequest(EngineServiceImpl.java:1666)
    >   at
    > com.jaspersoft.jasperserver.api.engine.jasperreports.domain.impl.ReportUnitRequest.execute(ReportUnitRequest.java:67)
    >   at
    > com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.execute(EngineServiceImpl.java:399)
    >   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at
    > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    >   at
    > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    >   at java.lang.reflect.Method.invoke(Method.java:601)     at
    > org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
    >   at
    > org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    >   at
    > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    >   at
    > org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)
    >   at
    > com.jaspersoft.ji.license.LicenseCheckAspect.runReport(LicenseCheckAspect.java:113)
    >   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at
    > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    >   at
    > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    >   at java.lang.reflect.Method.invoke(Method.java:601)     at
    > org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)
    >   at
    > org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)
    >   at
    > org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)
    >   at
    > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
    >   at
    > org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
    >   at
    > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    >   at
    > org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    >   at $Proxy210.execute(Unknown Source)    at
    > com.jaspersoft.ji.adhoc.service.AdhocEngineServiceImpl.execute(AdhocEngineServiceImpl.java:2243)
    >   at
    > com.jaspersoft.jasperserver.ws.axis2.ManagementServiceImpl.runReport(ManagementServiceImpl.java:1200)
    >   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at
    > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    >   at
    > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    >   at java.lang.reflect.Method.invoke(Method.java:601)     at
    > org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
    >   at
    > org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    >   at
    > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    >   at
    > org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)
    >   at
    > com.jaspersoft.ji.license.LicenseCheckAspect.executeMSCall(LicenseCheckAspect.java:118)
    >   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at
    > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    >   at
    > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    >   at java.lang.reflect.Method.invoke(Method.java:601)     at
    > org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)
    >   at
    > org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)
    >   at
    > org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)
    >   at
    > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    >   at
    > org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
    >   at
    > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    >   at
    > org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    >   at $Proxy267.runReport(Unknown Source)  at
    > com.jaspersoft.jasperserver.ws.axis2.ManagementService.runReport(ManagementService.java:240)
    >   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at
    > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    >   at
    > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    >   at java.lang.reflect.Method.invoke(Method.java:601)     at
    > org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
    >   at
    > org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
    >   at
    > org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
    >   at
    > org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
    >   at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)     at
    > org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)   at
    > org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453)
    >   at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)    at
    > org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
    >   at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)     at
    > org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
    >   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)     at
    > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    >   at
    > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    >   at
    > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:399)
    >   at
    > org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
    >   at
    > org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
    >   at
    > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)
    >   at
    > org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
    >   at
    > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    >   at
    > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)
    >   at
    > com.jaspersoft.ji.license.JILicenseFilter.doFilter(JILicenseFilter.java:66)
    >   at
    > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)
    >   at
    > org.springframework.security.providers.anonymous.AnonymousProcessingFilter.doFilterHttp(AnonymousProcessingFilter.java:105)
    >   at
    > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    >   at
    > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)
    >   at
    > com.jaspersoft.jasperserver.api.metadata.user.service.impl.MetadataAuthenticationProcessingFilter.doFilter(MetadataAuthenticationProcessingFilter.java:139)
    >   at
    > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)
    >   at
    > com.jaspersoft.jasperserver.api.metadata.user.service.impl.PasswordExpirationProcessingFilter.doFilter(PasswordExpirationProcessingFilter.java:85)
    >   at
    > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)
    >   at
    > com.jaspersoft.jasperserver.multipleTenancy.MTBasicProcessingFilter.doFilterHttp(MTBasicProcessingFilter.java:180)
    >   at
    > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    >   at
    > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)
    >   at
    > com.jaspersoft.jasperserver.api.metadata.user.service.impl.JIPortletAuthenticationProcessingFilter.doFilter(JIPortletAuthenticationProcessingFilter.java:81)
    >   at
    > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)
    >   at
    > com.jaspersoft.jasperserver.api.logging.filter.BasicLoggingFilter.doFilter(BasicLoggingFilter.java:53)
    >   at
    > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)
    >   at
    > org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
    >   at
    > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    >   at
    > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)
    >   at
    > org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:188)
    >   at
    > org.springframework.security.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:99)
    >   at
    > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    >   at
    > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    >   at
    > com.jaspersoft.jasperserver.war.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:67)
    >   at
    > org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
    >   at
    > org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
    >   at
    > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    >   at
    > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    >   at
    > com.jaspersoft.jasperserver.war.P3PFilter.doFilter(P3PFilter.java:43)
    >   at
    > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    >   at
    > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    >   at
    > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    >   at
    > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    >   at
    > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:558)
    >   at
    > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    >   at
    > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    >   at
    > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    >   at
    > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    >   at
    > org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
    >   at
    > org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
    >   at
    > org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
    >   at java.lang.Thread.run(Thread.java:722) Caused by:
    > java.lang.NoClassDefFoundError: Could not initialize class
    > com.abcd.framework.web.servicelocator.ServiceLocator  at
    > com.abcd.myproject.service.ReportProcessingService.fetchReportRecords(ReportProcessingService.java:810)
    >   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at
    > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    >   at
    > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    >   at java.lang.reflect.Method.invoke(Method.java:601)     at
    > org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
    >   at
    > org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    >   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.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    >   at $Proxy268.fetchReportRecordsForCTR275(Unknown Source)    at
    > com.abcd.myproject.ReportDataSourceServiceImpl.setReportParameterValues(ReportDataSourceServiceImpl.java:79)
    >   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at
    > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    >   at
    > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    >   at java.lang.reflect.Method.invoke(Method.java:601)     at
    > org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
    >   at
    > org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    >   at
    > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    >   at
    > org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:50)
    >   at
    > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    >   at
    > org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    >   at $Proxy315.setReportParameterValues(Unknown Source)   at
    > com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:1463)
    >   at
    > com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runReport(EngineServiceImpl.java:874)
    >   at
    > com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportRunnable.run(EngineServiceImpl.java:754)
    >   at
    > com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$SynchronousExecutor.execute(EngineServiceImpl.java:733)
    >   at
    > com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:488)
    >   ... 115 more
    
    • JB Nizet
      JB Nizet over 11 years
      Post the full stack trace of the exception.
    • jdb
      jdb over 11 years
      Most of the time java.lang.NoClassDefFoundError is not the actual problem. There should be another exception before that. You should be looking for an exception which happens during the static initialization of the class in the message. Any access to this class will trigger NoClassDefFound but it means only that the class fails to initialize.
    • Harry K
      Harry K over 11 years
      I have added Stack Trace in original Post
    • Harry K
      Harry K over 11 years
      Actually there is no Exception before this exception. for debugging purpose I tried adding static block & printing statement inside static block But it never get executed
    • Sajan Chandran
      Sajan Chandran over 11 years
      make sure you have your jasper related jars in tomcat classpath.
    • jdb
      jdb over 11 years
      Are there any static fields in this class com.abcd.framework.web.servicelocator.ServiceLocator?
    • JB Nizet
      JB Nizet over 11 years
      Are the jasper jars in your webapp, under WEB-INF/lib, or are they in Tomcat's classpath? They should be in WEB-INF/lib.
    • Harry K
      Harry K over 11 years
      All the Jasper related JARs are present in tomcat/WEb-INF/lib directory The ServiceLocator is singleton class ....so the Only static field is instance variable of ServiceLocator itself
    • JB Nizet
      JB Nizet over 11 years
      You mean in your webapp's WEB-INF/lib? Tomcat doesn't have a WEB-INF directory.
    • Harry K
      Harry K over 11 years
      Yes ... I am sorry ... i meant mywebapp/WEB-INF/lib