2016-06-12 107 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这也是目录从中启动您的命令。