关于SpringMVC项目报错:java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/xxxx.xml]

问题描述:

在搭建SpringMVC项目时,使用多个Spring配置文件,这里我在web.xml中配置spring的配置文件:

<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

然后再spring-mvc.xml配置文件中又使用<import>标签导入其他的配置文件:applicationContext.xml,导入代码如下:

<import resource="./applicationContext.xml"/>

其中我将两个spring配置文件都放在resources下的spring文件夹下,文件结构如下:

|---resources
|---spring
|---spring-mvc.xml
|---applicationContext.xml

此时在项目执行时报错:

java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml]

解决办法

看到这个错误,我是不相信的,我检查了我的spring-mvc.xml文件,确定我使用是相对路径,并没有什么问题,于是到网上查资料,说使用spring配置文件路径填写的不对,推荐使用:classpath:或者classpath*:,分别使用这两种方式在<import>中改写applicationContext.xml的路径,可以是依然报FileNotFoundException,我十分确定我填写的路径没有问题,但是一直报错就十分奇怪,我观察报错的路径:

Could not open ServletContext resource [/WEB-INF/applicationContext.xml]

项目在运行是是直接去WEB-INFapplicationContext.xml文件,我查看项目运行时target文件夹,找到这是applicationContext.xml配置文件在:

/WEB-INF/classes/spring/applicationContext.xml

下,于是我将applicationContext.xml放到WEB-INF下在执行,发现没有的报错了,说明项目在运行时<import>根本没有起到应有的作用,系统依然走的是默认到WEB-INF目录下找的配置文件,这显然不是我要的效果,就在我最抓狂的时候,我发现我的web.xml少了几行配置:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring/spring-mvc.xml</param-value>
</context-param>

抱着试一试的想法,我将这一行配置加上,运行项目后顺利运行

......

......

......

(╯‵□′)╯︵┻━┻

总结

经过这一次的教训,发现做事的时候还是不够细心,这里我在晚上寻找解决办法是有关这个问题需要注意的地方列一下:

  • 经过多方资料的对比,在设置spring配置文件时,建议使用classpath而不是classpath*貌似会因为这个问题报错,我暂时没有遇到过
  • 在配置文件wen.xml中使用<context-param>配置contextConfigLocation变量,我就是犯了这个错误
  • 配置文件名一定要写写对,这种属于最低级也是最容易忽略的错误

另外如果有什么其他问题,或者错误的地方,希望大家提出宝贵的意见,谢谢

参考资料

http://blog.csdn.net/lee0723/article/details/18223749

http://perfy315.iteye.com/blog/2009258

http://blog.csdn.net/zwx_20092029/article/details/39229971

最新文章

  1. JavaScript使用构造函数获取变量的类型名
  2. C和C++混合编程中的extern &quot;C&quot; {}
  3. USB通信协议——深入理解
  4. thinkphp基于角色的权限控制详解
  5. MVC表单
  6. [转] How to change font settings for all UI elements (toolbar and context menus, property editors, etc.)
  7. HTTP一次请求的过程
  8. springmvc返回jsp源代码解决办法
  9. C#DataGridView 美化
  10. spring boot配置写法
  11. Ionic 测试针对Andorid平台
  12. Android——与查询联系人相关的3张表
  13. 【SqlServer系列】表连接
  14. Eureka注册客户端
  15. Java for Android 第三周学习总结
  16. day19 python之re模块正则练习
  17. 河北省重大技术需求征集系统原型(MVC框架业务流程简介)
  18. oracle 11g空表不能exp导出问题解决方案
  19. 局域网 FTP建立,搭建一个简易的局域网服务器
  20. mac配置php7运行环境

热门文章

  1. C++ STL map详解
  2. Java 内存分配策略
  3. 关于Web.config的debug和release.config文件
  4. 【javascript】浅谈javaScript的深拷贝
  5. NodeJS基本使用简介
  6. Python第一行代码
  7. # Consumed parameters
  8. Elastic Stack
  9. 利用Arduino快速制作Teensy BadUSB, 攻击计算机
  10. shell解析命令行的过程以及eval命令