2013-07-24 72 views
0

我想實現使用NetBeans IDE春季佔位符的概念。 我想要的屬性文件是在我的罐子將要部署到fodler,以便它可以通過運行jar文件的人進行編輯。Filenotfound例外,而讀confiration文件春天

dist文件夾中包含的jar文件,庫文件夾和一個屬性FIEL包含與數據源的條目。

我使用的ClassPathXmlApplicationContext閱讀confiuration文件並加載到應用程序上下文。 我的配置文件中有一個條目

<bean id="c12" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location"> 
     <value>database.properties</value> 
    </property> 
</bean> 

,但我得到下面的異常

Caused by: java.io.FileNotFoundException: class path resource [database.properties] cannot be opened because it does not exist 

* 編輯: * 意識到isssue與類路徑, 類路徑是src文件夾,而在命令行上運行jar時則爲「jar文件」,但在這兩種情況下,都會丟失與jar文件位於同一文件夾中的屬性文件。除了指定使用文件的絕對路徑:是否有任何其他方式在上下文應用

回答

0

隨着錯誤消息mentionned相對路徑來對抗,沒有任何跡象顯示,春季試圖從你的classpath如果加載。就你而言,這意味着在你的JAR中。

如果你想從文件系統上的文件加載它,你必須使用file:前綴。例如,爲了從Java應用程序的啓動路徑加載:

file:database.properties 

但我會建議設置一個絕對路徑:

file:/path/to/database.properties 
0

要讓旁邊放置的罐子服用效果database.properties文件,你必須包括當前目錄到類路徑中運行的程序

當假設以下目錄結構:

myfolder 
+- myprog.jar 
+- database.properties 

您的代碼應該能夠皮卡database.properties如果程序使用下面的命令運行(與MyFolder文件作爲當前目錄)

java -cp . -jar myprog.jar 
+0

我曾嘗試使用java命令運行。 -jar myprog.jar,但我仍然收到FILENotFoundException,說明場不能被打開,因爲它不存在 – juan