java.lang.NoClassDefFoundError :: Class present at the given path in Tomcat
Solution 1
Some clarifications:
-
NoClassDefFoundError
!=ClassNotFoundException
-
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 theNoClassDefFoundError
- 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.
Related videos on Youtube
Harry K
Updated on June 04, 2022Comments
-
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 over 11 yearsPost the full stack trace of the exception.
-
jdb over 11 yearsMost 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 over 11 yearsI have added Stack Trace in original Post
-
Harry K over 11 yearsActually 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 over 11 yearsmake sure you have your jasper related jars in tomcat classpath.
-
jdb over 11 yearsAre there any static fields in this class com.abcd.framework.web.servicelocator.ServiceLocator?
-
JB Nizet over 11 yearsAre 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 over 11 yearsAll 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 over 11 yearsYou mean in your webapp's WEB-INF/lib? Tomcat doesn't have a WEB-INF directory.
-
Harry K over 11 yearsYes ... I am sorry ... i meant mywebapp/WEB-INF/lib
-