Не удается загрузить файл свойств для свойства-заполнителя

мой файл свойств находится по следующему пути:

src\main\resources\META-INF\app-config.properties

и мои файлы конфигурации spring находятся по пути:

WebContent\WEB-INF

и при попытке загрузить файл свойств следующим образом:

<context:property-placeholder
        location="classpath:META-INF/app-config.properties" />

я получаю исключение:

java.io.FileNotFoundException: class path resource [META-INF/app-config.properties] cannot be opened because it does not exist

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<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:cache="http://www.springframework.org/schema/cache"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:jms="http://www.springframework.org/schema/jms" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xmlns:lang="http://www.springframework.org/schema/lang" xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:oxm="http://www.springframework.org/schema/oxm" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:task="http://www.springframework.org/schema/task" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
        http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
        http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.0.xsd
        http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.1.xsd
        http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.1.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
        http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd
        http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">

    <import resource="application-Security-Context.xml" />

    <import resource="application-DataAccess-Context.xml" />

    <import resource="application-Service-Context.xml" />

    <context:component-scan base-package="com.myapp" />

    <!-- PERSISTENCE -->
    <context:property-placeholder
        location="classpath:META-INF/app-config.properties" />


    <jee:jndi-lookup id="appDS" jndi-name="MyApp" expected-type="javax.sql.DataSource"/>

    <bean id="persistenceUnitManager"
        class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
        <property name="defaultDataSource" ref="appDS" />
    </bean>

    <bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceUnitManager" ref="persistenceUnitManager" />
        <property name="persistenceUnitName" value="MyApp" />
    </bean>

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>


    <tx:annotation-driven transaction-manager="transactionManager" />
</beans>

applicationContext загружается в web.xml следующим образом:

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>

я использую ant для создания своего проекта, мне не хватает конфигурации ant или конфигурации eclipse для этой проблемы?

Конфигурация муравья:

<zipfileset dir="${basedir}/src/main/resources/META-INF" includes="app-config.properties" fullpath="WEB-INF/classes/META-INF/app-config.properties"/>

также я добавил папку META-INF в сборку развертывания в eclipse.

пожалуйста, сообщите, как правильно загрузить этот файл свойств.


person Mahmoud Saleh    schedule 01.10.2012    source источник


Ответы (4)


Можете ли вы попробовать <context:property-placeholder location="classpath*:META-INF/app-config.properties" /> Если это также не удается, возможно, ваш src\main\resources не находится в пути к классам.

person Chandru    schedule 09.10.2012

Я думаю, что проблема в вашем пути, указанном для файла свойств. Можете ли вы попробовать следующее.

<context:property-placeholder location="classpath:/META-INF/app-config.properties" />

Надеюсь, это поможет вам.

person Japan Trivedi    schedule 01.10.2012
comment
это то же самое, создает то же исключение - person Mahmoud Saleh; 01.10.2012
comment
Попробуйте еще одну вещь. <context:property-placeholder location="classpath:/app-config.properties" /> - person Japan Trivedi; 01.10.2012
comment
Предлагаемый здесь путь звучит правильно, я думаю, проблема может заключаться в том, что вы строите с помощью ant, возможно, вы неправильно добавили src/main/resources в качестве папки сборки или сбой .properties может не оказаться в конечном итоге в пути к классам - person Biju Kunjummen; 03.10.2012

Здесь можно сделать небольшое предположение, поскольку вы говорите, что используете eclipse, но не точно, когда возникает исключение - из eclipse или из командной строки. Если из Eclipse, вам нужно будет согласовать настройки проекта Eclipse с теми, которые использует Ant. Перейдите в раздел Project-Properties, но вместо сборки развертывания перейдите к пути сборки Java и убедитесь, что все исходные данные (как код, так и ресурсы) присутствуют. Что еще более важно, убедитесь, что в качестве выходных каталогов заданы те же каталоги, которые использует Ant. Длинный выстрел, но стоит попробовать!

person JoeG    schedule 05.10.2012

Действительно ли файл свойств находится в вашем скомпилированном артефакте? Можете ли вы показать нам список каталогов вашего разархивированного артефакта, чтобы мы могли увидеть, присутствует ли файл? Или вы запускаете его прямо из Eclipse, и ошибка появляется там? Если это так, вам нужно настроить свойства проекта, чтобы включить каталог и/или файл.

person sbzoom    schedule 09.10.2012