2016-01-18 40 views
2

我正在構建基於Spring Boot的Spring獨立應用程序。我希望此應用程序從屬於獨立目錄中的jar文件之外的屬性文件中讀取其屬性。內置應用程序的結構看起來像這樣在類路徑中添加屬性文件

testApplication 
├── test-1.0-SNAPSHOT.jar 
├── lib 
│ └── <dependencies are here> 
└── conf 
    └── application.properties 

我要加載的application.properties類路徑的文件,所以我可以在我的應用程序讀取。可能嗎?因爲當我運行像這樣我的jar文件(在Windows上):

java -cp "./*;lib/*;conf/*" com.myapp.Test 

我得到以下exeption:

Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.myapp.Test]; nested exception is java.io.FileNotFoundException: class path resource [application.properties] cannot be opened because it does not exist 
    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:180) 
... 
Caused by: java.io.FileNotFoundException: class path resource [application.properties] cannot be opened because it does not exist  
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172) 

我試圖通過這個類註釋來讀取應用程序的文件:

@PropertySource("classpath:application.properties") 

Java文檔沒有提及,可以在類路徑上加載非jar文件,但是如果此application.properties位於jar文件test-1.0-SNAPSHOT.jar中,那麼可以通過這種方式訪問​​它。

是否有可能將外部非jar文件放在classpath中?我知道我不一定在classpath上有這個文件,我可以通過不同的方式訪問它,但如果可能的話我仍然很好奇。

+0

java -cp「。; lib; conf」com.myapp.Test – JJF

回答

3

嘗試

java -cp "./*;lib/*;conf" com.myapp.Test 

阿斯特里克斯(*)用於查找不是所有的JAR類。

+0

是的,額外的asterix是原因。我不知道,*是用於jar文件,沒有*用於非jar文件 – Michal

2

對不起,在「conf /」後刪除星號(*)。

相關問題