【问题标题】:java.io.FileNotFoundException: class path resource cannot be opened because it does not existjava.io.FileNotFoundException:无法打开类路径资源,因为它不存在
【发布时间】:2017-03-17 17:07:39
【问题描述】:

我正在尝试为我的项目设置配置位置,但我不断收到以下错误:

java.io.FileNotFoundException:类路径资源 [main/resources/app-context.xml] 无法打开,因为它没有 存在

我的项目是这样设置的:

我的代码设置为:

ApplicationContext context = new ClassPathXmlApplicationContext(configLocation: "main/resources/app-context.xml");

我该如何解决这个问题?

【问题讨论】:

  • 在此处发布代码和错误日志。不在图片中
  • 对不起!会为以后的问题做!

标签: java spring file intellij-14


【解决方案1】:

您直接放在src/main/java 下的内容位于默认包中,位于类路径的根目录中。 src/main/resources 下的资源也是如此:它们最终位于类路径的根目录。

所以资源的路径是app-context.xml,而不是main/resources/app-context.xml

【讨论】:

  • 服务器运行时如何添加文件或稍后更新此资源文件?
  • @Kenji 你不能。资源是应用程序资源,在编译时已知并与应用程序捆绑在一起。如果您想稍后添加文件,那么这些文件不是应用程序资源,而是数据。数据进入你的数据库,不管它是什么(它可能是你的文件系统)。
  • 我想为我的移动应用程序版本放置一个 json 文件(是否强制更新)。因此,如果我可以只放置一个 json 文件并在公共静态根目录中更新它,它似乎比只为一条记录创建一个表更好。你的想法是什么?
  • 如果我想在名为report的目录中找到与“src”同级的文件怎么办?
【解决方案2】:

我们也可以试试这个解决方案

ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath*:app-context.xml");

在此spring会自动在类路径中找到该类

【讨论】:

  • 它似乎也适用于带有@ImportResource("classpath*:config.xml")的Spring Boot
【解决方案3】:

试试这个:

ApplicationContext context = new ClassPathXmlApplicationContext("app-context.xml");

【讨论】:

    【解决方案4】:

    文件位置/路径必须相对于您的类路径位置。如果资源目录在你的类路径中,你只需要“app-context.xml”作为文件位置。

    【讨论】:

      【解决方案5】:

      这对我有用 ApplicationContext context = new ClassPathXmlApplicationContext("app-context.xml");

      【讨论】:

        【解决方案6】:

        对于 Eclipse - 按照路径Build path -> Configure build path -> go to sources -> add folder 标记您拥有 XML 文件的资源文件夹。 现在,如果您尝试运行,它将运行良好。

        【讨论】:

          猜你喜欢
          • 2017-02-19
          • 1970-01-01
          • 2019-09-05
          • 2012-04-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-27
          相关资源
          最近更新 更多