2016-10-10 304 views
1

我正在開發一個添加了依賴項的Spring Boot應用程序。這個依賴有一個spring.xml文件。我正在掃描這個xml文件並創建bean。其中一個bean正在尋找classpath中的hibernate.properties。我在我的應用程序的資源文件夾下添加了這個屬性文件。但是我仍然看到下面列出的例外情況。請你能讓我知道我錯過了什麼嗎?Spring - java.io.FileNotFoundException:無法打開類路徑資源,因爲它不存在

<util:properties id="HibernateProperties" location="classpath:hibernate.properties"/> 

java.io.FileNotFoundException:類路徑資源 [hibernate.properties]不能打開,因爲它不符合存在

+0

你試過'classpath:/ hibernate.properties'嗎? –

回答

2

Here some doc from spring

Ant風格圖案classpath:資源不保證 找到匹配的資源,如果要搜索的根包在 多個班級路徑位置。這是因爲資源如

COM/myCompany中/包1 /服務context.xml中可能只在一個 位置,但是當一個路徑,如

類路徑:COM/myCompany中/ ** /服務-context.xml

所以,

<util:properties id="HibernateProperties" location="classpath*:hibernate.properties"/> 

可能會給你更好的機會。

但是,

請注意,classpath中*:當使用Ant風格的圖案相結合 只會可靠地與至少一個根目錄下的 模式開始工作之前,除非實際的目標文件駐留在文件 系統。這意味着類路徑*:*。xml這樣的模式不會從 中檢索來自jar文件根目錄的文件,而僅從 擴展目錄的根目錄中檢索文件。這起源於JDK的ClassLoader.getResources()方法中的限制,該方法僅返回文件系統 傳入的空字符串的位置(指示潛在根到 搜索)。

+1

謝謝@kuhajeyan。我無法修改spring.xml,因爲它位於外部jar中。在這種情況下還有什麼可以做的嗎? –

+0

@PunterVicky我想應該有可能定義你自己的將重寫已存在於classpath中的東西,請點擊這裏http://stackoverflow.com/questions/12382070/overriding-property-file-using-spring – kuhajeyan

相關問題