使用jar运行时,Java不遵循带有-cp选项的类路径规范

时间:2015-01-13 23:03:08

标签: java properties classpath loading

我正在运行如下程序:

java -cp /deploy/conf -jar test.jar

test.jar有一个类,它尝试从位于/ deploy / conf中的文件加载属性,如下所示:

Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties")

问题是我从线程的类加载器和系统类加载器中打印出类路径,并且都不包含我使用/deploy/conf选项指定的值-cp

如何确保java程序将我使用-cp选项指定的值传递给线程的类加载器?

2 个答案:

答案 0 :(得分:1)

来自java的{​​{1}} -jar选项:

  

使用此选项时,JAR文件是所有用户类的源,并忽略其他用户类路径设置。

通常这意味着您需要使用Manifest Class-Path条目。在这种情况下,您不能引用具有Class-Path条目的绝对路径,因此您必须将文件作为文件加载,而不是作为资源加载。

答案 1 :(得分:0)

您可以尝试直接使用FileInputStream代替资源加载过程,例如使用类似的东西:

FileInputStream in = new FileInputStream ("/deploy/conf/config.properties");