Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么spring找不到beans.xml?_Java_Spring_Intellij Idea - Fatal编程技术网

Java 为什么spring找不到beans.xml?

Java 为什么spring找不到beans.xml?,java,spring,intellij-idea,Java,Spring,Intellij Idea,我正在学习spring,并将Beans.xml放入main/resources文件夹。我正在使用maven来管理项目 但是在运行时,它找不到Beans.xml ApplicationContext context = new ClassPathXmlApplicationContext( "Beans.xml"); 该错误是线程“main”中的异常 我正在使用Intellij,想知道为什么吗?我使用的是spring 4.3.4 new ClassPathXml

我正在学习spring,并将Beans.xml放入main/resources文件夹。我正在使用maven来管理项目

但是在运行时,它找不到Beans.xml

 ApplicationContext context = new ClassPathXmlApplicationContext(
                "Beans.xml");
该错误是线程“main”中的异常

我正在使用Intellij,想知道为什么吗?我使用的是spring 4.3.4

new ClassPathXmlApplicationContext("file:src/main/resources/beans.xml");

文件:前缀指向文件系统资源,而不是类路径。

尽管@Hiccup的答案是正确的,但它并不准确,因为如果您的应用程序依赖于文件系统(使用“文件:”前缀),并且您打包此应用程序并使用java命令执行它,将引发相同的异常,因此您可以添加此前缀:

ApplicationContext context = new ClassPathXmlApplicationContext(
            "classpath:Beans.xml");
但如果您已经配置了Maven(或Ant或Ivy)来告诉IntelliJ从main/resources文件夹中查找资源,那么这是正确的


因此,如果前面的确认不是您的情况,那么您必须将Beans.xml移动到src/main/java。

您假设Beans.xml在运行时位于类路径中。检查你的假设。JVM告诉您它没有。你是和Maven一起打包的吗?这个Spring是作为WAR部署在Java EE应用程序服务器上还是作为Spring引导部署在可执行JAR上?您是以何种方式运行应用程序的?我使用的是“Run Main”,而不是打包到WAR或JAR中。然后,在运行“Run Main”时,您需要使用
src/Main/resources
作为类路径的一部分。在Eclipse中,这些被称为“运行配置”,但我不知道。它是有效的,但是否有任何配置更改,我可以只指定beans.xml如果有效,那么您的文件名为
beans.xml
,而不是
beans.xml
。不要使用这个答案中提到的构造,因为一旦部署应用程序(或创建jar文件),它就会崩溃。这只能在IDE中工作。使用
new ClassPathXmlApplicationContext(“beans.xml”)
注意小写而不是大写的起始字符。这与大小写无关。我使用的是windows,所以大小写不敏感\
ApplicationContext context = new ClassPathXmlApplicationContext(
            "classpath:Beans.xml");