Joe*_*Joe 5 java xml spring javabeans
线程"main"中的异常org.springframework.beans.factory.BeanDefinitionStoreException:从类路径资源[com/main/beans.xml]解析XML文档的IOException; 嵌套异常是java.io.FileNotFoundException:无法打开类路径资源[com/main/beans.xml],因为它不存在
ApplicationContext context =
new ClassPathXmlApplicationContext("com/main/beans.xml");
Run Code Online (Sandbox Code Playgroud)
我之前尝试过
ApplicationContext context =
new FileSystemXmlApplicationContext("src/main/java/com/main/beans.xml");
Run Code Online (Sandbox Code Playgroud)
它运作良好.
如何相对于classpath做到这一点?
注意:类路径位于构建路径中
在我正在关注的示例中,它具有以下结构并且它可以工作
项目结构

类路径

ApplicationContext context =
new ClassPathXmlApplicationContext("com/caveofprogramming/spring/test/beans/beans.xml");
Run Code Online (Sandbox Code Playgroud)
这是我通常使用的文件结构,工作正常.正如@ 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();
}
}
Run Code Online (Sandbox Code Playgroud)
对我来说很好.如果您想知道为什么当xml已经在同一个类包中时仍然需要使用完整的包名,那么首先会在类根中搜索它
UPDATE
把包裹bean.xml放入src/main/resources.它应该适用于您使用的路径.
更新2
"是的,它确实有效.但为什么它正在运行这个例子,我也在关注.如果beans.xml超出了src/main/resources ..我无法找到它是如何工作的?*
问题是,Spring容器将从类根看起来.它与resources文件夹无关.resources对于maven项目来说,这是一个方便的目录,可以构建到您的类路径.本教程工作的原因是,beans.xml它位于一个包中,它将被放入构建中的类路径中,如下所示.它只是首选使用a resources,但是package`也将构建到类路径.

| 归档时间: |
|
| 查看次数: |
25071 次 |
| 最近记录: |