微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 无法打开beans.xml(配置文件)因为不存在

Exception in thread “main”
org.springframework.beans.factory.BeanDeFinitionStoreException:
IOException parsing XML document from class path resource
[com/main/beans.xml]; nested exception is
java.io.FileNotFoundException: class path resource
[com/main/beans.xml] cannot be opened because it does not exist

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

我之前尝试过

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

它运作良好.

如何相对于classpath做到这一点?

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

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

项目结构

类路径

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

解决方法:

这是我通常使用的文件结构,工作正常.正如@ 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已经在同一个类包中时仍然需要使用完整的包名,那么首先会在类根中搜索

UPDATE

将包含bean.xml的包放入src / main / resources中.它应该适用于您使用的路径.

更新2

“Yes, it worked. But why is it working the example, I’m following as well. If the beans.xml is out of src/main/resources .. I can’t find out how that works? *

问题是,spring容器将从类根看起来.它与资源文件夹没有任何关系.资源是maven项目构建到类路径的便利目录.本教程工作的原因是,beans.xml位于一个包中,它将被放入构建中的类路径中,如下所示.它只是使用资源,但package`也将构建到类路径.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。