Spring не может найти файл в classpath, но он находится прямо в корне файла war - PullRequest
0 голосов
/ 28 августа 2018

У меня есть проект с использованием стандартного макета веб-приложения Maven, развернутого в Tomcat 8.5 в Eclipse Photon (с последними обновлениями).

Внутри src\main\webapp\WEB-INF\applicationContext.xml есть <import resource="classpath:/other-spring-stuff.xml" />

Я подтвердил, что other-spring-stuff.xml, который обычно находится в src/main/resources, появляется в корне WAR, сгенерированного mvn install.

Но при попытке запустить приложение в Tomcat в Eclipse я получаю:

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 голосов
/ 28 августа 2018

Исходная проблема ( spring.xml не найдена ) и вторичная проблема ( ложное сообщение об отсутствии web.xml ) были решены с помощью следующих шагов:

  1. Перейдите в представление Git Repositories в Eclipse или в вашей базовой файловой системе и найдите физические файлы вашего проекта.
  2. Найти и удалить все экземпляры .project, .classpath и .settings/ в вашем проекте
  3. Из представления Git Working Tree (или импорта файловой системы, если Git не используется), Импорт проектов в Eclipse как проект Maven
  4. (Необязательно, но рекомендуется для предотвращения повторного появления) добавьте .project, .classpath и .settings/* к .gitignore после удаления их из git

Я считаю, что основной причиной является то, что один из этих специфических для Eclipse файлов конфигурации, который был зарегистрирован в репозитории, был поврежден и / или несовместим с моей версией Eclipse. Также: эти файлы, кажется, содержат ссылки на абсолютные пути к вещам в рабочей области, поэтому они ломаются, когда проект извлекается без изменений в другое место .

...