2016-06-12 181 views
0

我希望能夠在不同的文件夾中運行一個jar文件java -jar myapp.jar,並有它的基礎上執行上下文加載config.properties當執行文件夾。訪問運行jar文件

/myapp/myapp.jar 

/folder1/config.properties 
/folder2/java -jar /myapp/myapp.jar <------ loads /folder1/config.properties 

/some/folder2/config.properties 
/some/folder2/java -jar /myapp/myapp.jar <------ loads /folder2/config.properties 

一旦屬性裝,我想它,然後在當前執行文件夾中創建一些文件。

所以:

  1. 我如何告訴Java加載屬性文件基於當前執行的背景下?
  2. 如何訪問jar執行的文件夾?
+0

'新文件( 「config.properties」)' –

+0

所以從'/ MYAPP/config.properties'是不會加載? – jax

+0

否。相對文件路徑是相對於當前文件夾解析的,該文件夾是您啓動程序的文件夾。正如其他任何可執行文件或命令一樣。當你輸入'less readme.txt'時,它會打開當前目錄下的readme.txt文件。與Java相同。 –

回答

1

當你提供的類Filenew File("config.properties")構造相對路徑,幕後,內置的絕對路徑是

System.getProperty("user.dir")/config.properties 

user.dir實際上是User working directory這也是目錄從中啓動您的命令。