Spring在类路径中找不到文件,但是它在war文件的根目录中

时间:2018-08-28 03:39:41

标签: spring eclipse maven classloader

我有一个使用标准Maven Web应用程序布局的项目,该项目部署在Eclipse Photon的Tomcat 8.5中(具有最新更新)。

src\main\webapp\WEB-INF\applicationContext.xml内,有一个<import resource="classpath:/other-spring-stuff.xml" />

我验证了通常位于other-spring-stuff.xml中的src/main/resources出现在WAR生成的mvn install的根中。

但是当尝试在Eclipse中的Tomcat中运行应用程序时,我得到了:

20:37:17 SEVERE: Servlet [servletSpringDispatcher] in web application [/myapp] threw load() exception - 2018-08-27 @{org.apache.catalina.core.StandardContext loadOnStartup} 
java.io.FileNotFoundException: class path resource [spring.xml] cannot be opened because it does not exist
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:330)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:227)

我真的不知道这是Maven,Eclipse还是Spring的问题。

是什么原因造成的?这实际上是在一个项目中,直到昨天为止,该项目都可以正常工作,并且项目配置没有任何变化。

1 个答案:

答案 0 :(得分:0)

原始问题(找不到 spring.xml )和次要问题(缺少web.xml的错误报告)都可以通过以下步骤解决:

  1. 进入Eclipse或基础文件系统中的Git Repositories视图,然后找到项目的物理文件。
  2. 在您的项目中查找和删除.project.classpath.settings/的所有实例
  3. 从git Working Tree视图(如果不使用Git,则从文件系统导入),将项目作为Maven项目导入到Eclipse
  4. (可选,但建议您防止再次发生)在从git中删除后将.project.classpath.settings/*.gitignore添加到<img src="{{getImage image 'productgallery_size' (cdn theme_settings.default_image_product)}}" alt="{{image.alt}}" title="{{image.alt}}">

我相信根本原因是,签入回购协议的这些Eclipse特定配置文件之一已损坏和/或与我的Eclipse版本不兼容。另外:这些文件似乎包含对工作空间中事物的绝对路径引用,因此当签出未经修改的项目到其他位置时它们会中断