1

我正在使用 Spring 3.2.11.RELEASE 和 Maven 3.3。我在我的应用程序上下文文件中定义了这个……</p>

<bean id="localPropertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
     <property name="locations">
        <list>
            <value>classpath:quickbase.properties</value>
        </list>
        </property>
</bean> 
…
<bean id=“myClient" class="org.mainco.subco.mysystem.MyClient">
    <constructor-arg index="0" type="String" value="${quickbase.username}" />
    <constructor-arg index="1" type="String" value="${quickbase.password}" />
    <constructor-arg index="2" type="String" value="${quickbase.url}" />
</bean>

但是当我运行测试时,出现以下错误

Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'myClient' defined in class path resource [META-INF/spring/applicationContext-orders.xml]: Could not resolve placeholder 'quickbase.username' in string value "${quickbase.username}"; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'quickbase.username' in string value "${quickbase.username}"

这让我感到困惑,因为在我的目标/类目录中,我可以看到一个文件“quickbase.properties”,其中定义了“quickbase.username”。我不知道我还需要检查什么。

4

2 回答 2

9

我今天收到了类似的错误。我通过在美元和第一个大括号 { 之间添加一点空格来解决它。我相信 java 运行时正试图解决一个意外的占位符。以下是示例:

<bean id=“myClient" class="org.mainco.subco.mysystem.MyClient">
    <constructor-arg index="0" type="String" value="$ {quickbase.username}" />
    <constructor-arg index="1" type="String" value="$ {quickbase.password}" />
    <constructor-arg index="2" type="String" value="$ {quickbase.url}" />
</bean>
于 2017-05-12T13:07:08.823 回答
0

您的应用程序中有多个org.springframework.beans.factory.config.PropertyPlaceholderConfigurer可能是造成此问题的原因。

看看这个:Could not resolve Spring property placeholder

可能是您正在寻找的答案..

于 2016-05-26T21:01:35.840 回答