2013-10-14 2 views
0

Spring не могу найти свой файл свойств (MyPropFile.properties) внутри SRC/основные/ресурсов и бросает исключение, как показано нижеMaven проекта: Spring не может найти файл свойств внутри SRC/основные/ресурсов с использованием PropertyPlaceholderConfigurer

java.io.FileNotFoundException: class path resource [file*:/src/main/resources/MyPropFile.properties] cannot be opened because it does not exist 

Но если я помещаю MyPropFile.properties в корень моего проекта (MyProject/MyPropFile.properties), весна может найти его, и программы будут выполняться должным образом.

Как настроить это так, что я могу разместить свой файл свойств внутри SRC/основные/ресурсов

это мое пространство имен

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
    http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd 
    "> 

это мой боб

<context:property-placeholder location="classpath:MyPropFile.properties" /> 

Java:

@Value("${message.fromfile}") 
     private String message; 

Спасибо заранее, ребята.

ответ

2

Попробуйте это. Сделать эту запись в вашем конфигурационном файле приложения:

<beans xmlns:context="http://www.springframework.org/schema/context" 
..... 
xsi:schemaLocation="... 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd 
....> 

<context:property-placeholder location="classpath:MyPropFile.properties" /> 
.... 
</beans> 

и доступ к свойству сообщения:

@Value("${messageFromfile}") 
private String message; 
+0

Я обновил свой вопрос, отражая изменения, которые вы предложили, сэр. К сожалению, он все еще не может найти файл свойства java.io.FileNotFoundException: MyPropFile.properties (Система не может найти файл указан) – royjavelosa

+0

комментирует определение компонента PropertySlaceholderConfigurer и пытается создать и запустить ваше приложение. –

+0

Он работает только в том случае, если MyPropFile.properties лежит в основе моего проекта. Я надеялся, что он сработает, даже если он находится в src/main/resources/MyPropFile.properties – royjavelosa

1

Я бы ожидал, что Maven скопирует это в каталог target и для того, чтобы путь к классу был установлен соответствующим образом. Я бы не ожидал, что Maven будет искать в каталоге источник, кроме как во время компиляции.

+0

что вы имеете в виду? Он отлично работает внутри eclipse, если я помещаю файл свойств в корень проекта. Моя проблема заключается в том, что я поместил файл свойств в src/main/resources, который предположительно станет ресурсом по умолчанию для проекта maven. – royjavelosa

1

Вы должны использовать

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location"> 
      <value>classpath:/MyPropFile.properties</value> 
     </property> 
</bean> 

без префикса classpath:, то PropertyPlaceholderConfigurer пытается решить этот ресурс как файл ресурса, поэтому ищет его в текущем рабочем каталоге.

+0

попробовал это только сейчас, но он дает эту ошибку. Кстати, я использую Spring 3.0.5.RELEASE java.io.FileNotFoundException: MyPropFile.properties (система не может найти указанный файл) \t at java.io.FileInputStream.open (Native Method) – royjavelosa

+0

Не могли бы вы проверить, существует ли '{каталог проекта}/target/classes/MyPropFile.properties'? – ryanp

+0

К сожалению, там я проверил столько раз :( – royjavelosa

0

В качестве дополнения к @ryanp решение, которое является правильным и продезинфицировать способ иметь дело с файлами ресурсов , который должен находиться под полем .

Maven будет автоматически собирать настроенные файловые ресурсы и добавить их к вашему выполнению держателя пути к классам, так что ресурсы с префиксом классам: может быть решен.

В противном случае, если вы найдете свой стек с самостоятельной Maven не будучи в состоянии потока файлов ресурсов, вы можете подключить в конфигурации ресурсов Maven и сопоставить файлы местоположение следующим образом:

<build> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <includes> 
       <include>*.properties</include> 
      </includes> 
     </resource> 
    </resources> 
</build> 
Смежные вопросы