我的屬性文件出現問題,因爲我在罐子裏部署我的應用程序。當它只是在WEB-INF/classes目錄下時,沒有問題。我的問題只發生在罐子裏的屬性文件中。屬性文件在罐子裏找不到
讓我解釋一下。我將簡化我的代碼。
一個名爲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;
}
}
該類在配置xml文件中定義,稱爲appContext-dao.xml。它包含:
<bean id="ipxDao" class="com.IpxDaoImpl" parent="myGenericDao">
<property name="listAllIpxSql" value="${ipx.list}" />
</bean>
還有另一個配置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目錄中,並帶有正確的文件夾。現在它起作用了。
那麼,我的代碼有什麼問題?這是地方嗎? 在此先感謝。
塞德里克
不確定這是否是您的問題,但在您的屬性佔位符中的「classpath」之後不應該有星號。 – Steve
sql.properties存儲在項目中的位置?在構建的JAR中它在哪裏? – cowls
有幾個sql.properties,在不同的文件夾中,但有一個公共根(類似com/mypackages)。 – user2622053