它在jar中时找不到属性文件

时间:2014-01-10 12:44:37

标签: spring properties jar classpath

我的属性文件存在问题,因为我在jar中部署了我的应用程序。当它只是在WEB-INF / classes目录中时,没有问题。我的问题只出现在jar中的属性文件中。

让我解释一下。我会简化我的代码。

我的应用程序处理称为IPX的商务对象(知道它是什么并不有用)

有一个名为IpxDaoImpl的DAO类,带有字符串属性,即SQL查询

public class IpxDaoImpl implements IpxDao extends SimpleJdbcDaoSupport {
  private String listAllIpxSql; // query for listing IPX in Database

  public void listAllIpx() {
    // Does a query in Database using the variable listAllIpxSql
    // ...
  }

  public void setListAllIpxSql(String listAllIpxSql) {
    this.listAllIpxSql = listAllIpxSql;
  }
}

此类在config xml文件中定义,名为appContext-dao.xml。它包含:

<bean id="ipxDao" class="com.IpxDaoImpl" parent="myGenericDao">

  <property name="listAllIpxSql" value="${ipx.list}" />

</bean>

还有另一个config xml文件,它告诉我们如何加载属性文件:appContext-commo-dao.xml。它包含:

<context:property-placeholder location="classpath*:**/sql.properties" />

并且有一个sql.properties文件适用于有关IPX的查询。它包含:

ipx.list=SELECT * FROM IPX

现在,当我在WEB-INF / classes中部署我的应用程序时,一切都很好。但我们有一个整合环境,我们必须生成罐子。我上面提到的所有文件都在同一个jar中。然后,当我部署时,我遇到了这个错误: 无法解决占位符'ipx.list' 似乎找不到属性文件sql.properties。

我尝试提取此属性文件并将其放在WEB-INF / classes目录中,并使用正确的文件夹。现在它有效。

那么,我的代码出了什么问题?是安慰者吗? 提前谢谢。

塞德里克

1 个答案:

答案 0 :(得分:0)

尝试使用classpath:/sql.properties

参考文献:

  

与Ant样式模式结合使用时,请注意“classpath *:”   只能在至少一个根目录之前可靠地工作   模式开始,除非实际目标文件驻留在文件中   系统

有关详细信息,请参阅http://docs.spring.io/spring/docs/2.5.5/reference/resources.html#resources-wildcards-in-path-other-stuff