我的属性文件存在问题,因为我在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目录中,并使用正确的文件夹。现在它有效。
那么,我的代码出了什么问题?是安慰者吗? 提前谢谢。
塞德里克
答案 0 :(得分:0)
尝试使用classpath:/sql.properties
参考文献:
与Ant样式模式结合使用时,请注意“classpath *:” 只能在至少一个根目录之前可靠地工作 模式开始,除非实际目标文件驻留在文件中 系统