0

我的属性文件位于以下路径下:

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

应用程序上下文.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"/>

我还在 Eclipse 中将 META-INF 文件夹添加到部署程序集中。

请告知如何正确加载此属性文件。

4

4 回答 4

4

你可以试试<context:property-placeholder location="classpath*:META-INF/app-config.properties" /> 如果这也失败了,那么可能是你的 src\main\resources 不在类路径下。

于 2012-10-09T18:10:12.043 回答
0

我认为问题出在您为属性文件定义的路径中。你可以试试下面的一个。

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

希望这对您有所帮助。

于 2012-10-01T09:15:09.007 回答
0

在这里进行一些猜测,正如您所说的那样,您正在使用 eclipse,但不完全是发生异常的时间 - 从 eclipse 或命令行。如果来自 Eclipse,那么您需要将 Eclipse 项目设置与 Ant 正在使用的那些设置保持一致。转到 Project-Properties 下,而不是部署程序集,转到 Java Build 路径并验证您的所有源输入(代码和资源)都在那里。更重要的是,验证输出目录是否设置为 Ant 正在使用的相同目录。远射,但值得一试!

于 2012-10-05T11:07:33.857 回答
0

属性文件实际上是否在您编译的工件中?您能否向我们展示您解压缩的工件的目录列表,以便我们查看该文件是否存在?或者你是直接从 Eclipse 运行它并且错误出现了吗?如果是这样,您需要调整项目属性以包含目录和/或文件。

于 2012-10-09T15:26:07.010 回答