使用外部属性文件执行jar

She*_*jie 3 java jar properties

我有一个带有main类的jar,它可以执行如下:java -jar test.jar

在罐子里面,我有类似的东西

public static void main(String[] args) throws IOException {
    InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("config.properties");
    Properties prop = new Properties();
    prop.load(is);
    //then I wanna fetch all the properties in the config.properties file
}
Run Code Online (Sandbox Code Playgroud)

我同时运行:

  1. java -jar test.jar

  2. java -jar test.jar -cp/tmp(其中config.properties所在)

  3. java -jar test.jar -cp /tmp/config.properties(显然它不起作用,但是让你知道我想在这里实现的目标)

虽然我把config.properties文件的路径放在我的$ PATH和$ CLASSPATH下,但代码都不起作用,所有三个都抛出了NPE.

关键是,从长远来看,我将配置文件放在$ {my-config-path}中,并正确读取/处理它.但暂时我只想要快速而肮脏的东西.

  1. 我不想在我的jar中包含属性文件.
  2. 我想在类路径或路径中将它保留在外部,当我执行jar时,它会毫无问题地找到它.

Dav*_*ton 5

一旦指定了-jar所有classpath选项,就会被忽略.

而是指定默认配置位置(如在用户的主目录中)并允许在命令行上覆盖.

有各种命令行解析选项,最简单的带有选项信息的annotate类属性,例如,长和短选项名称,用法等.

或使用-D选项并检索适当的系统属性.

另一种选择是PreferencesAPI.