我正在使用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)
请帮我解决这个问题。
谢谢
答案 0 :(得分:1)
当JRE找不到类时,抛出NoClassDefFoundError。在你的情况下,它找不到类Lcom / platysgroup / lmex / adapter / moodle / dao / CourseDao,你很可能没有添加到你的类路径。
答案 1 :(得分:0)
前缀“L”表示类的实例。请参阅Field Descriptors。您应该专注于查找bean courseDao
的配置问题,并检查其所有依赖项是否存在于同一应用程序上下文中。