2011-02-23 66 views
5

我需要在JAR之外加載文件,但相對於它(確切地說是lib/config/config.ini)。我使用的確切路徑,只要工作目錄是JAR是它工作正常,即如何在JAR之外但相對於JAR加載文件?

/path/to/jar$ java -jar JAR.jar 

如果它的運行是這樣的:

~$ java -jar /path/to/jar/JAR.jar 

它不能找到它。我怎樣才能正確加載相對於JAR位置的文件?

+0

可能的重複[加載文件相對於正在執行的jar文件](http://stackoverflow.com/questions/3627426/loading-a-file-relative-to-the-executing-jar-file) – 2011-02-23 22:11:41

+1

檢查這出:http://stackoverflow.com/questions/320542/how-to-get-the-path-of-a-running-jar-file – iluxa 2011-02-23 22:12:39

+0

@iluxa:謝謝,那有效。奇怪的是,它很難加載相對路徑... – Jonah 2011-02-23 22:26:48

回答

3

嘗試使用getClassLoader().getResource("classname")來查找jar文件中類的URL。您會發現它的路徑在jar的路徑和jar中的路徑之間以!分隔,您可以輕鬆切片。