[英]ClassPathXmlApplicationContext error, Spring framework
关于Springs框架,我遇到了一个问题,该问题导致服务器与数据库之间的通信不起作用。
我创建的项目是一个Spring项目,然后重构为Maven。
在代码的这一行: ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("projectName/spring.xml");
我收到此错误: Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [projectName/spring.xml]; nested exception is java.io.FileNotFoundException: class path resource [projectName/spring.xml] cannot be opened because it does not exist
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [projectName/spring.xml]; nested exception is java.io.FileNotFoundException: class path resource [projectName/spring.xml] cannot be opened because it does not exist
但是它确实存在。 我已经尝试过解决该问题的解决方案,例如改为编写ClassPathXmlApplicationContext("spring.xml")
。 但是这没有帮助,因为从那时起Spring会自动在src / main / resources文件夹中查找。 这对我不起作用,因为我的项目结构不允许我添加此文件夹并在其中放入XML文件。 如果尝试创建此文件夹,那么它将自动放入Java-resources文件夹中,并且Eclipse不允许我将XML放入其中。
这就是我的项目的样子: 在此处输入图片描述
我有办法声明Spring在哪里寻找这个spring.xml文件吗?
ClassPathXmlApplicationContext假定该文件位于您的类路径中(Javy描述了如何从类路径中加载资源)。
如果要从文件系统中加载配置(在执行操作时),则可能需要考虑使用FileSystemXmlApplicationContext。 使用这种机制来加载上下文,您可以像当前一样传递文件系统位置。
new ClassPathXmlApplicationContext(this.getClass().getResource("/spring.xml").getPath())
试试上面的代码
希望能有所帮助
Spring不会查看src/main/resources
,而是会查看类路径。
如果您编写projectName/spring.xml
,则需要将此文件放在bin/projectName/spring.xml
或build/projectName/spring.xml
。 在哪里bin
或build
您的构建文件夹。
如果您构建一个jar,则此文件应位于jar!projectName/spring.xml
。
对于Web应用程序,此文件应位于WEB-INF/classes/projectName/spring.xml
。
如果在类路径中添加src/main/resources
,则此文件夹的内容将位于build文件夹中。 Maven自动在类路径中添加src/main/resources
。
有时您应该在IDE中重建(清理)您的项目,以在build文件夹中包含此类文件。
使用“ FileSystemXmlApplicationContext”作为
ApplicationContext context = new FileSystemXmlApplicationContext("spring.xml");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.