java.io.FileNotFoundException: ресурс пути к классу [timex-servlet.properties] не может быть открыт, потому что он не существует

При попытке запустить весеннее веб-приложение появляется следующее сообщение об ошибке:

2012-04-12 13:53:20,491 ERROR [org.springframework.web.servlet.DispatcherServlet] - 

Context initialization failed
org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: class path resource [timex-servlet.properties] cannot be opened because it does not exist
java.io.FileNotFoundException: class path resource [timex-servlet.properties] cannot be opened because it does not exist
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:137)
    at org.springframework.core.io.support.PropertiesLoaderSupport.loadProperties(PropertiesLoaderSupport.java:172)

Я запускаю Tomcat (версия 6.x) через Eclipse. Я попытался поместить timex-servlet.properties в следующие каталоги, но безрезультатно:

WebContent\WEB-INF
WebContent\WEB-INF\classes
WebContent\

Вот ссылка на timex-servlet.properties в timex-servlet.xml:

    <bean id="placeholderConfig"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location"
        value="timex-servlet.properties" />
</bean>

Есть несколько SO-потоков, имеющих дело с одним и тем же сообщением, в котором говорится, что нужно поместить classpath: перед ссылкой на файл свойств. Поэтому я попробовал следующее, которое также не сработало:

        <bean id="placeholderConfig"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location"
        value="classpath:timex-servlet.properties" />
</bean>

5 ответов

Решение

Убедитесь, что файл находится в /WEB-INF/classes папка и использование classpath:/timex-servlet.properties (обратите внимание на косую черту после classpath:)

Если вы не хотите перемещать его под класс и хотите оставить файл свойств в WEB-INF/ попробуйте следующий путь к классу:../file.properties

Не следует размещать файл свойств в том же месте, где определены исходный код и метод main. Он должен находиться в том же месте, где находится ваш файл конфигурации (applicationContext.xml).

В моем случае мое имя файла свойств - sport.properties (расширение файла должно быть.properties), и я использую maven для проекта -

  1. Расположение файла свойств -> src-> test-> java-> sport.properties

PropertiesFilelocation

Для проектов Spring поместите файл в файл src или src->somefolder->some.properties.

В моем случае я пропустил плагин cargo-maven2-pom. Может помочь тому, кто застрял.

Просто описав мой случай здесь, может быть, он кому-нибудь поможет:) Использовал Maven и Spring MVC с чистой конфигурацией Java (без XML). Вот мои шаги для решения проблемы:

1) Поместите свой файл свойств в src/main/resources папку (создайте последнюю вручную, если ее нет).

2) Добавьте в свой класс конфигурации Java следующую аннотацию:@PropertySource("classpath:nameOfYourFile.properties")

3) Обновите свой проект Maven (в Eclipse: щелкните правой кнопкой мыши на проекте -> Maven -> Обновить проект).

И, конечно же, убедитесь, что имя вашего файла совпадает с именем в аннотации.
Если с вашим проектом все в порядке, значит, оно должно работать.

Другие вопросы по тегам