我有一个带有主类的 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
}
我运行两者:
java -jar 测试.jar
java -jar test.jar -cp /tmp(config.properties 所在位置)
java -jar test.jar -cp /tmp/config.properties (显然它不起作用,但让您了解我在这里想要实现的目标)
该代码不起作用,尽管我将 config.properties 文件的路径放在 $PATH 和 $CLASSPATH 下,但所有三个都抛出 NPE。
重点是,从长远来看,我会将配置文件放在 ${my-config-path} 中,并正确读取/处理它。但暂时我只想要一些快速而肮脏的东西。
- 我不想将属性文件包含在我的 jar 中。
- 我想将其保留在外部类路径或路径中,当我执行 jar 时,它可以毫无问题地找到它。
一旦您指定-jar
所有类路径选项都将被忽略。
相反,指定默认配置位置(例如在用户的主目录中)并允许在命令行上覆盖。
有多种命令行解析选项,最简单的用选项信息注释类属性,例如选项的长短名称、用法等。
或者使用一个-D
选项并检索适当的系统属性。
另一种选择是Preferences
API.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)