【问题标题】:Spring configuration error WEB-INF/servlet-context.xml FileNotFoundExceptionSpring配置错误WEB-INF/servlet-context.xml FileNotFoundException
【发布时间】:2016-02-16 13:20:34
【问题描述】:

我有一个非常简单的弹簧测试应用程序。但是,即使一切似乎都正常,我也得到了例外。我可能会遗漏一些东西。请检查图片以查看项目结构和 web.xml 文件包含以及异常:-

efinitionStoreException: IOException 从类路径资源解析 XML 文档 [WEB-INF/servlet-context.xml];嵌套异常是 java.io.FileNotFoundException: 类路径资源 [WEB-INF/servlet-context.xml] 无法打开,因为它不存在 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)

【问题讨论】:

  • WEB-INF 不是类路径资源,而是 servlet 资源...删除 classpath: 前缀或将您的 XML 文件放在 src/main/resources 中,从它们复制到 WEB-INF/classes (在类路径)。

标签: spring spring-mvc exception configuration


【解决方案1】:

servlet 环境中有两种资源:

  • servlet 资源 - Web 应用程序根目录下的文件(通过 ServletContext 加载)
  • 类路径资源 - Web 应用程序类路径上的资源(通过 ClassLoader 加载)

当 Spring 应该加载其配置时,它需要知道使用哪种机制。

  • classpath:foo/bar.xml - 将作为类路径资源加载
    • 检查WEB-INF/classesWEB-INF/lib/*.jar 的内容和其他共享 servlet 容器的类路径位置
    • 使用 maven 及其项目结构时,src/main/resources 中的所有文件都将放在类路径中
  • foo/bar.xml - 将作为 servlet 资源加载
    • 使用 maven 及其项目结构时,src/main/webapp 文件夹是应用程序的根目录

TL;DR 正如我在评论中所写,在引用 XML 文件时删除 classpath: 前缀或将您的 XML 文件移动到 src/main/resources 并删除 WEB-INF 部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多