我的DAO的java.lang.NoClassDefFoundError

时间:2011-03-01 08:36:25

标签: java spring

我正在使用spring.xml作为我的控制器和dao配置。我的spring-config.xml如下:

<bean id="courseDao" class="com.platysgroup.lmex.adapter.moodle.dao.CourseDao"
    init-method="setMoodleDataSource" depends-on="moodleAuthenticationDetails">
    <property name="adapterDataSource" ref="adapterDataSource"></property>
    <property name="userDao" ref="userDao"></property>
    <property name="announcementDao" ref="announcementDao"></property>
    <property name="roleDao" ref="roleDao"></property>
    <property name="logDao" ref="logDao"></property>
</bean>

我在项目名称为lmex-impl的com.platysgroup.lmex.adapter.moodle.dao包中的项目中有一个coursedao类。但是我的spring配置并没有从lmex-impl.jar获得这个类。 spring-config.xml在lmex-web项目上。还有一件事就是他在异常中向我展示了错误的道路。错误的名称是Lcom/platysgroup/lmex/adapter/moodle/dao/CourseDao;而不是com/platysgroup/lmex/adapter/moodle/dao/CourseDao;异常完整堆栈跟踪如下:

  

javax.servlet.ServletException:servlet的Servlet.init()Spring MVC Dispatcher Servlet抛出异常

     
    

org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:195)     org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:159)     org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:141)     org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:90)     org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:417)

  
     

根本原因

     

java.lang.NoClassDefFoundError:Lcom / platysgroup / lmex / adapter / moodle / dao / CourseDao;   java.lang.Class.getDeclaredFields0(本机方法)   java.lang.Class.privateGetDeclaredFields(Class.java:2291)   java.lang.Class.getDeclaredFields(Class.java:1743)

     

org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.findResourceMetadata(CommonAnnotationBeanPostProcessor.java:315)   org.springframework.context.annotation.CommonAnnotation .........

     

java.lang.ClassNotFoundException:com.platysgroup.lmex.adapter.moodle.dao.CourseDao   org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)

请帮我解决这个问题。

谢谢

2 个答案:

答案 0 :(得分:1)

当JRE找不到类时,抛出NoClassDefFoundError。在你的情况下,它找不到类Lcom / platysgroup / lmex / adapter / moodle / dao / CourseDao,你很可能没有添加到你的类路径。

答案 1 :(得分:0)

前缀“L”表示类的实例。请参阅Field Descriptors。您应该专注于查找bean courseDao的配置问题,并检查其所有依赖项是否存在于同一应用程序上下文中。