我正在运行如下程序:
java -cp /deploy/conf -jar test.jar
test.jar有一个类,它尝试从位于/ deploy / conf中的文件加载属性,如下所示:
Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties")
问题是我从线程的类加载器和系统类加载器中打印出类路径,并且都不包含我使用/deploy/conf
选项指定的值-cp
。
如何确保java程序将我使用-cp选项指定的值传递给线程的类加载器?
答案 0 :(得分:1)
来自java
的{{1}} -jar
选项:
使用此选项时,JAR文件是所有用户类的源,并忽略其他用户类路径设置。
通常这意味着您需要使用Manifest Class-Path条目。在这种情况下,您不能引用具有Class-Path条目的绝对路径,因此您必须将文件作为文件加载,而不是作为资源加载。
答案 1 :(得分:0)
您可以尝试直接使用FileInputStream
代替资源加载过程,例如使用类似的东西:
FileInputStream in = new FileInputStream ("/deploy/conf/config.properties");