当前位置: 首页 > 知识库问答 >
问题:

不能打开豆子。xml(配置文件),因为不存在

景阳平
2023-03-14

线程“main”组织中出现异常。springframework。豆。工厂BeanDefinitionStoreException:IOException解析来自类路径资源[com/main/beans.XML]的XML文档;嵌套的例外是java。伊奥。FileNotFoundException:无法打开类路径资源[com/main/beans.xml],因为它不存在

ApplicationContext context = 
      new ClassPathXmlApplicationContext("com/main/beans.xml");

我以前试过用

ApplicationContext context = 
     new FileSystemXmlApplicationContext("src/main/java/com/main/beans.xml");

它工作得很好。

如何相对于类路径做到这一点?

注意:类路径位于构建路径中

在我下面的示例中,它具有以下结构,并且可以正常工作

项目结构

类路径

ApplicationContext context = 
    new ClassPathXmlApplicationContext("com/caveofprogramming/spring/test/beans/beans.xml");

共有1个答案

惠翰藻
2023-03-14

这是我通常使用的文件结构,工作正常。正如@M.Deinum所说,您需要将xml文件放在src/main/resources中。我通常把它放在一个完整的包路径中,包含资源,所以在编译时,maven会将所有资源添加到与使用它们的相应类相同的路径中。

执行上述操作时,资源会被复制到类包中

public class App {

    public static void main(String[] args) {
        ApplicationContext context
                = new ClassPathXmlApplicationContext("com/underdogdevs/stackmaven/beans.xml");

        Hello hello = (Hello) context.getBean("hello");
        hello.sayHello();
    }
}

对我来说很好。如果您想知道,当xml已经在同一个类包中时,为什么仍然需要使用完整的包名,那么将首先在类根中搜索它

使现代化

将带有bean.xml的包放入src/main/Resources。它应该与您使用的路径一起工作。

更新2

”“是的,奏效了。但是为什么它在以身作则,我也在跟随。如果beans.xmlsrc/main/Resources...我不知道这是怎么回事?**

问题是,Spring容器将从类根查看。它与资源文件夹无关。Resources是maven项目构建到类路径的方便目录。本教程之所以有效,是因为beans.xml在一个包中,它将被放入构建中的类路径中,如下所示。只优选使用资源,但是包'也将构建到类路径。

 类似资料:
  • 我试图在Spring中创建我的第一个bean,但是在加载上下文时遇到了一个问题。我在src/main/resources中有一个bean的配置XML文件。 线程“main”org.springframework.beans.factory.BeanDefinitionStoreException异常:IOException解析类路径资源[src/main/resources/beans.XML]中

  • 问题内容: 我正在尝试在Spring中制作我的第一个bean,但是在加载上下文时遇到了问题。我在src / main / resources中有一个bean的配置XML文件。 我收到以下IOException: `Exception in thread “main” org.springframework.beans.factory.BeanDefinitionStoreException: IO

  • 在我使用Log4j版本之前的时间。1在Spring应用。我用这样的东西来定义log4j的位置。属性配置文件驻留: 现在我切换到Log4j ver.2,我有一个XML配置: 但Spring似乎不使用此文件,并且日志记录并没有附加到控制台或数据库中。 这是输出: 我做错了什么?

  • 我正在尝试运行maven goal:validation并继续获取:[警告]无法激活请求的配置文件“pom.xml”,因为它不存在。 在我的组织里。日食m2e。果心序言: 我做错了什么?

  • 我正在尝试使用log4j2记录器登录我的aws lambda函数,但不幸的是找不到log4j2.xml,我只是在CloudTrail日志中看到标准错误消息 “错误状态记录器未找到log4j2配置文件。使用默认配置:仅将错误记录到控制台。” 如果我在本地运行应用程序(在main方法中调用对象方法)一切正常)。我遵循官方的AWS留档,但没有帮助。 可以部署的虚拟项目如下:https://github.

  • 我需要在Excel文件中做数据导出,我想很容易:) 我使用PhpSpreadsheet库(https://github.com/phpoffice/PhpSpreadsheet) 我尝试使用PhpSpreadsheet示例,并做一些简单的事情: 创建Xlsx电子表格 在Hardrive上保存 在浏览器中打开下载 你知道为什么会有这个问题吗?