簡體   English   中英

如何在可執行jar中給出相對路徑?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM