我的代碼在JAR文件中運行,我需要獲取該文件的完整路徑。 例如,我的JAR名爲example.jar,位於D:\ example \ 因此,我需要通過該jar內的一些代碼來獲取「D:\ example \ example.jar」。 我已經嘗試了很多方法來獲得該路徑,但他們都沒有正常工作。獲取正在運行的JAR文件的路徑返回「rsrc:./」
其中之一是
getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath()
很多人說,這爲他們工作,但它返回「RSRC:./」對我來說。
我已搜查後,我發現我的MANIFEST.MF包含此:
Manifest-Version: 1.0
Rsrc-Class-Path: ./
Class-Path: .
Rsrc-Main-Class: Example
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
我不知道這意味着什麼,但如果我刪除RSRC東西,取代其他的事情吧,它說罐子壞了。我認爲這是它不起作用的原因。有人知道這意味着什麼嗎? PS:我正在使用BAT文件運行我的JAR。
爲什麼要獲取JAR的路徑? – SJuan76
'getPath()'*不會將URI轉換爲文件。即使它是一個file:URI,路徑部分可能包含百分號轉義符,所以使用getPath()最終將返回一個不是有效文件名的字符串。將URI轉換爲文件名的正確方法是'Paths.get(uri)',但它只適用於file:URI。也就是說,無論你想要做什麼,都可以使用Class.getResource或ClassLoader.getResource來完成。 – VGR
你可以得到一個jar本身的路徑,但是談論jar文件中的文件路徑是沒有意義的。 – MeBigFatGuy