【问题标题】:Property-placeholder using envriomental variables as CATALINA_HOME使用环境变量作为 CATALINA_HOME 的属性占位符
【发布时间】:2013-09-07 20:45:15
【问题描述】:

我想在属性占位符的位置使用环境变量,但我不明白:

我是这样尝试的:

<context:property-placeholder location="${CATALINA_HOME}/conf/database.properties" order="0"/>

但我收到此错误

org.springframework.beans.factory.BeanInitializationException: 可以 不加载属性;嵌套异常是 java.io.FileNotFoundException:无法打开 ServletContext 资源 [/${CATALINA_HOME}/conf/database.properties]

另外,我没有找到有关在上下文配置或属性占位符中使用环境变量的文档。

亲切的问候。

【问题讨论】:

    标签: java spring applicationcontext


    【解决方案1】:

    我认为你应该这样做:

    <context:property-placeholder location="#{ systemProperties['CATALINA_HOME'] }/conf/database.properties"/>
    

    如果我没听错的话。

    【讨论】:

    • 我遇到了同样的错误。看起来并没有翻译表达式。无法加载属性;嵌套异常是 java.io.FileNotFoundException: 无法打开 ServletContext 资源 [/#{systemProperties['CATALINA_HOME']}/conf/database.properties]。
    • @Josema 你在某处定义了CATALINA_HOME 吗?
    • 是的,是linux系统的环境变量。所以当我回显 $CATALINA_HOME 时,它会显示出来
    • 我使用了 ${catalina.home},这很有效:)。当我使用您的表达式 {systemProperties['CATALINA_HOME'] 它看起来在 标记之间工作,因为我在错误中得到一个空字符串而不是表达式,我想我在从 Eclipse 执行时没有定义 CATLINA_HOME .
    【解决方案2】:

    我用过:

    我听说这适用于 tomcat 6.0 或更高版本。

    【讨论】:

      【解决方案3】:

      您也可以使用以下方式,我在我的应用程序中使用它

      <context:property-placeholder location="file:${env.CATALINA_HOME}/conf/database.properties"/>
      

      【讨论】:

      • 您在此处缺少文本
      猜你喜欢
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      • 1970-01-01
      • 2012-03-10
      相关资源
      最近更新 更多