Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法解析属性文件_Java_Spring_Properties - Fatal编程技术网

Java 无法解析属性文件

Java 无法解析属性文件,java,spring,properties,Java,Spring,Properties,我有两个maven模块-Webapp和Persistence。持久性模块有一个属性文件-数据库.properties和两个上下文文件-持久性上下文.xml(主),数据源上下文.xml(导入到持久性上下文.xml) persistenceContext.xml 数据库.properties Persistencemaven模块是Webapp模块的依赖项。我将Webapp部署到Tomcat时失败,出现异常: org.springframework.beans.factory.BeanDefiniti

我有两个maven模块-
Webapp
Persistence
。持久性模块有一个属性文件-
数据库.properties
和两个上下文文件-
持久性上下文.xml
(主),
数据源上下文.xml
(导入到
持久性上下文.xml

persistenceContext.xml

数据库.properties

Persistence
maven模块是
Webapp
模块的依赖项。我将
Webapp
部署到Tomcat时失败,出现异常:

org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'dataSource' defined in class path resource [spring-datasource.xml]: Could not resolve placeholder 'database.url' in string value "${database.url}"
我尝试了以下解决方案:

  • 在目录路径下移动了database.properties
    resources\com\example\persistence
  • datasourceContext.xml
    中使用
    属性占位符
    PropertyPlaceholderConfigurer
    ,而不是在
    persistenceContext.xml
    中使用
    属性占位符
  • Webapp
    模块下移动了database.properties,然后尝试第1点
  • 我总是确信
    database.properties
    文件位于
    Persistence
    模块的类路径下

  • 上面提到的一切都不起作用,我还查看了stackoverflow和spring论坛上的其他线程,但没有成功。

    尝试
    classpath*:
    而不是
    classpath:
    。还要确保您没有多个
    ,因为它们会相互干扰。请在您的webapp模块中附加
    mvn依赖项:resolve
    的输出,以及持久性模块的目录树。每个应用程序只能使用一个
    ?我有两个
    ——一个在
    Webapp
    模块中,另一个在
    Persistence
    模块中。当您有多个XML元素时,您将创建多个占位符,第二个占位符将替换第一个占位符。使用Java配置,您可以使用多个
    @PropertySource
    注释,并将条目添加到同一占位符中。谢谢,问题在于多次使用
    。请@M.Deinum,发送您的评论式回复。
    <bean id="dataSource" destroy-method="close"
              class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="${database.url}"/>
        <property name="user" value="${database.username}"/>
        <property name="password" value="${database.password}"/>
        <property name="debugUnreturnedConnectionStackTraces" value="true"/>
        <property name="unreturnedConnectionTimeout" value="20"/>
        <property name="minPoolSize" value="5"/>
        <property name="initialPoolSize" value="10"/>
        <property name="maxPoolSize" value="50"/>
        <property name="maxStatements" value="50"/>
        <property name="idleConnectionTestPeriod" value="120"/>
        <property name="maxIdleTime" value="1200"/>
     </bean>
    
    database.url=jdbc:mysql://255.255.255.255:3306/...
    database.username=...
    database.password=...
    
    org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'dataSource' defined in class path resource [spring-datasource.xml]: Could not resolve placeholder 'database.url' in string value "${database.url}"