我正在構建基於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上有這個文件,我可以通過不同的方式訪問它,但如果可能的話我仍然很好奇。
java -cp「。; lib; conf」com.myapp.Test – JJF