Spring初始化报错:无法找到foodDAO对应类food.bill.dao.FoodDaoImpl
foodDAO对应类的问题 别着急,这个问题在Spring入门阶段特别常见,我帮你梳理几个关键排查方向,一步步来解决:
核对类的全限定名是否完全匹配
仔细检查applicationContext.xml里foodDAObean的class属性值:food.bill.dao.FoodDaoImpl,要和你实际的Java类完全一致——包括包路径层级和类名大小写(Java对大小写严格敏感,比如FoodDaoImpl和foodDaoImpl是完全不同的类)。打开你的Java文件,确认顶部的package声明是package food.bill.dao;,类名确实是public class FoodDaoImpl。确认类已编译到项目classpath中
如果用IDEA、Eclipse这类IDE开发,去项目的编译输出目录看看:Maven项目是target/classes,普通Web项目是bin,有没有food/bill/dao/FoodDaoImpl.class这个文件。如果找不到,说明代码没编译成功,先去IDE控制台查看编译错误,把这些问题解决掉。检查项目依赖与打包配置
如果FoodDaoImpl在单独的模块(比如dao模块)里,要确保Web项目已经正确引入了该模块的依赖。比如Maven项目,查看pom.xml里是否有该模块的<dependency>配置,且依赖范围为compile(默认就是这个,除非你特意修改过)。排查XML配置的拼写失误
再仔细核对applicationContext.xml里的bean定义,有没有拼写错误,比如:<bean id="foodDAO" class="food.bill.dao.FoodDaoImpl"> <!-- 其他配置,比如依赖注入等 --> </bean>确认
class属性里没有多余空格、少写包名片段,或者把类名写错(比如写成FoodDaoImp少了最后一个l)。清理缓存并重新构建项目
有时候IDE缓存会引发奇怪的问题,试试清理项目:Maven可以在终端执行mvn clean install,IDE里点击Clean Project或Rebuild Project选项,之后重新部署Web应用再启动试试。
内容的提问来源于stack exchange,提问作者Sarabjeet singh

