嵌套异常错误java.lang.NoClassDefFoundError

时间:2011-07-20 12:41:43

标签: java eclipse

我使用Eclipse在Java中编程,我遇到以下错误:

GRAVE: Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [com.sis.artemis.dashboard.statistics.sdis.personnels.service.SdisPersonnelsStatisticsServiceImpl] for bean with name 'sdisPersonnelsStatisticsService' defined in class path resource [resources/sdis-services.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: com/sis/artemis/dashboard/statistics/sdis/personnels/service/SdisPersonnelsStatisticsService
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1238)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:576)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1304)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:870)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:556)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
    at org.apache.catalina.core.StandardService.start(StandardService.java:519)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.NoClassDefFoundError: com/sis/artemis/dashboard/statistics/sdis/personnels/service/SdisPersonnelsStatisticsService
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2722)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1124)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1612)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:257)
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:408)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1256)
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1227)
    ... 24 more
20 juil. 2011 11:32:36 org.apache.catalina.core.StandardContext start
GRAVE: Error listenerStart
20 juil. 2011 11:32:36 org.apache.catalina.core.StandardContext start
GRAVE: Erreur de démarrage du contexte [/artemis-dashboard-spring] suite aux erreurs précédentes

但是班级定义明确,我今天早上没有这个问题而且我没有改变任何东西。

有人有想法解决我的问题吗?

4 个答案:

答案 0 :(得分:1)

首先要认识到的是这个错误是runtime问题,通常是类路径问题。确保它所抱怨的类在您的类路径中。如果有问题的类位于另一个jar中,请确保jar在您的类路径中。如果该类位于项目的其他位置,请确保如果从eclipse运行该类,则该类位于源文件夹或类似文件夹中。

此错误表示该类在编译时出现,但现在运行代码的JVM无法再找到相关的类。

答案 1 :(得分:0)

您似乎正在使用tomcat作为Web应用程序服务器?众所周知,Tomcat存在类加载问题。每当你重启tomcat时,还要记得清空它的工作和临时文件夹(直接位于tomcat主文件夹中)。

答案 2 :(得分:0)

我不确定您使用的Tomcat版本,但请查看Tomcat中类加载器的文档;

Doco for class loader in Tomcat Version 6.0。你说你的班级在“源文件夹”中。也许尝试确保编译的.class文件在WEB-INF / classes

它看起来也找不到 SdisPersonnelsStatisticsService ,它可能是 SdisPersonnelsStatisticsServiceImpl 的接口类。确保两个(.class文件,而不是.java文件)都在您的类路径(或WEB-INF / classes)中

答案 3 :(得分:0)

我这样解决了我的问题: 我删除了我的tomcat服务器并重新安装它,现在这个工作,我不知道为什么......

感谢大家的帮助,并为我抽出时间。