提交jar时需要提供属性文件路径

时间:2017-05-13 05:04:04

标签: java

我的app.jar位于路径/home/user/app/,我的属性文件位置可以更改,因为它位于/home/user/path/appproperty.properties位置。

所以我想在提交jar时提供属性文件位置。

java -jar app.jar -Dappproperty.properties="/home/user/path/appproperty.properties"

但我得到了:

  

线程“main”中的异常java.io.FileNotFoundException:appproperty.properties(没有这样的文件或目录)

我的代码:

Properties p = new Properties();
FileInputStream fileStream = new FileInputStream("appproperty.properties");
p.load(fileStream);
System.out.println("_username "+p.getProperty("_username"));
System.out.println("_password "+p.getProperty("_password"));

1 个答案:

答案 0 :(得分:0)

似乎通过将-Dappproperty.properties="..."传递给JVM, 您期望new FileInputStream("appproperty.properties");将使用其字符串参数来查找它。 那它是如何运作的。

使用-D传递的参数可作为系统属性访问, 通过System.getProperty(...)。 所以你似乎正在寻找这样的东西:

String path = System.getProperty("appproperty.properties", "");
if (new File(path).isFile()) {
    try (FileInputStream fileStream = new FileInputStream(path)) {
        Properties p = new Properties();
        p.load(fileStream);
        System.out.println("_username "+p.getProperty("_username"));
        System.out.println("_password "+p.getProperty("_password"));
    }
}

最后,非常重要的是,您需要在 -jar参数之前传递属性,而不是之后:

java -Dappproperty.properties="/home/user/path/appproperty.properties" -jar app.jar