概念介绍:
classpath:是指WEB-INF文件夹下的classes目录
tomcat-7.0.50 目录结构及作用
bin: 存放tomcat的命令
conf:存放tomcat的一些配置文件
lib:存放tomcat运行需要加载的jar包
logs:存放tomcat运行过程中产生的日志文件
temp:存放tomcat运行过程中产生的临时文件
webapps:存放应用程序
work:存放tomcat运行时的编译后文件,例如jsp编译后的文件
classes:是指项目部署后存放class文件xml文件jar包的文件夹
以tomcat部署项目为例 文件路径 E:\tools\apache-tomcat-6.0.44\webapps\项目name\WEB-INF\classes
问题说明:
在spring配置文件中,通过 classpath*:/xxx.xml 引入了 外部配置文件 然后在运行junit单元测试的时候 报错xxx.xml 配置文件中的一个bean 注入失败;
classpath与 classpath* 区别
classpath 是精确查找 classpath* 是模糊查找
classpath : 只会到你的class路径中查找文件。
classpath* : 不仅包含class路径,还包括jar文件中(class路径)进行查找。
classpath*:需要遍历所有的classpath,所以加载速度很慢;当项目中有多个classpath路径,并同时加载多个classpath路径下的文件,*就会加载所有classpath下的文件
不加*只会加载第一个classpath路径下的文件。
我的问题:
问题的本质是 通过手动加载上下文 没有找到目标类,也就是说目标类并没有被加载。
没有被加载的原因是 spring引入外部文件的时候 外部文件名称写错了。
总结:
1、不需要*的不要加,不然会影响报错信息导致不能快速的找到问题所在(当我将*去掉的时候,很明显的报错说 文件加载失败,原因是目标文件不存在)
2、文件要有同意的命名规范,可以防止因为习惯问题导致的错误。