我的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"));
答案 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