【问题标题】:(Spring) class path resource exception java.io.FileNotFoundException(Spring)类路径资源异常java.io.FileNotFoundException
【发布时间】:2015-11-09 03:17:53
【问题描述】:

我在 web.xml 中添加了以下代码

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
    classpath:com/neelamhotel/mavenwebproject5/configs/dao-context.xml
</param-value>

但是我遇到了同样的错误

IOException 从类路径资源 [com/neelamhotel/mavenwebproject5/configs/dao-context.xml] 解析 XML 文档;嵌套异常是 java.io.FileNotFoundException:类路径资源 [com/neelamhotel/mavenwebproject5/configs/dao-context.xml] 无法打开,因为它不存在

项目结构

浏览器视图

我知道dao-context.xml 文件在那里。但是为什么会报错呢?

更新的资源管理器视图

创建的 WAR 文件视图

【问题讨论】:

  • @Jens 不,不是这样。试过了。
  • 你能在资源的开头添加一个'/'吗? classpath:/com/neelamhotel/mavenwebproject5/configs/dao-configs.xml(再试一次)。否则,该位置将相对于您打开应用程序的路径。
  • @Augusto 尝试不工作
  • 我知道有 dao-configs.xml 文件。你怎么知道?您在哪里查找此文件?
  • @JBNizet 我的意思是我可以在我的源包中看到它,并且默认情况下在类路径中。所以当我通过param-value时提到classpath,它应该能够找到它。

标签: spring filenotfoundexception context-param


【解决方案1】:

在 Maven 项目中,src/main/java 用于 Java 源文件。 Maven 忽略其他文件。

必须复制并在类路径must go in src/main/resources 中可用的资源(即非Java 文件)。

Gradle 使用相同的约定。

【讨论】:

  • 我已将 dao-context.xml 移至 src/main/resources/。并将param-value 更改为src/main/resources/dao-context.xml。但是仍然找不到文件错误
  • 您不需要对您的 spring 配置进行任何更改。您放入 src/main/resources 的内容最终会出现在类路径中。使用与现在相同的包结构,但在 src/main/resources 而不是 src/main/java 中。
  • 我将我的包裹移到了resources 中,并将param-value 保留为classpath:com/neelamhotel/mavenwebproject5/configs/dao-context.xml。但不幸的是仍然收到文件未找到错误。混乱!!!
  • 您是否重新构建并重新部署了 webapp?发布更新的资源管理器视图。检查该文件是否可以在 Maven 构建的 WEB-INF/classes 下的 war 文件中找到。
  • 一切正常。如果从 Eclipse 启动服务器,请尝试停止它,清理它的工作目录,然后重新启动它。还可以尝试将 war 文件放到 web 服务器中并从 eclipse 外部启动它。
猜你喜欢
  • 2016-01-11
  • 2014-08-07
  • 2017-02-19
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 2010-12-08
相关资源
最近更新 更多