[英]How to give relative path in a executable jar?
我有一個Spring應用程序,我將其部署為.jar。
該應用程序必須寫入/ src中的文件夾(精確地是/src/main/resources/patches
)。 我直接在代碼中有此路徑。
在application.properties中: PATCH_DIR = src/main/resources/patches
該應用程序還必須從src/main/resources/myJson.json
讀取一個json文件,該路徑也直接寫入代碼中。
部署之前,從IDE運行時一切正常,該應用程序會看到文件和文件夾並正確讀取和寫入。
構建.jar后,路徑會更改,文件位於myJar.jar/BOOT-if/classes/myJson.json
,文件夾分別位於myJar.jar/BOOT-if/classes/patches
。
我如何在代碼中指定這些路徑,即使構建了jar之后,它們仍與我的應用程序相關?
編輯:我可以將文件的路徑指定為: PatchApplication.class.getClassLoader().getResource("myJson.json").getPath();
這應該可以解決問題,因為路徑是相對於類而不是項目的根目錄的,但是它並沒有任何改善。
您應該在文件系統中指定一個路徑,而不是.jar中的路徑。當您運行應用程序時,它將訪問給定的路徑。
通常所有的類都放在jar中的classes文件夾中。
所有在src / main / java之后結束的類都進入/ classes /文件夾,並且類似地,所有資源文件都移到了Eg。 您的源文件夾具有src / main / java / com / mypack / ABC.java,比您在jar中找到的/classes/com/mypack/ABC.class更高。
嘗試使用/ classes / patches和/classes/myJson.json。
這應該工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.