2014-01-10 26 views
0

我的屬性文件出現問題,因爲我在罐子裏部署我的應用程序。當它只是在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目錄中,並帶有正確的文件夾。現在它起作用了。

那麼,我的代碼有什麼問題?這是地方嗎? 在此先感謝。

塞德里克

+0

不確定這是否是您的問題,但在您的屬性佔位符中的「classpath」之後不應該有星號。 – Steve

+0

sql.properties存儲在項目中的位置?在構建的JAR中它在哪裏? – cowls

+0

有幾個sql.properties,在不同的文件夾中,但有一個公共根(類似com/mypackages)。 – user2622053

回答

0

嘗試classpath:/sql.properties

從參考:

請注意 「的classpath *:」 在與Ant風格樣式組合 只會可靠地與至少一個根工作目錄 模式開始之前,除非實際目標文件駐留在文件 系統中。

有關更多信息,請參閱http://docs.spring.io/spring/docs/2.5.5/reference/resources.html#resources-wildcards-in-path-other-stuff

+0

有幾個sql.properties文件,所以我寧願嘗試classpath *:com/mypackages/**/sql.properties – user2622053

+0

它的工作原理!我已經離開了classpath *,但後來我寫了包含不同sql.properties文件的公共文件夾的開頭 – user2622053

+0

因此,此解決方案的工作原理如下: classpath *:com/mypackages/**/sql。物業 謝謝! – user2622053

相關問題