更新:事实证明,在我进行的一些测试中,类路径没有在IDE中正确设置。下面的代码段工作正常。这不再是一个问题。
我正在尝试在将部署在JAR中的文本文件中设置一些属性/配置。
我希望用户能够提供自己的属性/配置文件,这些文件将覆盖JAR中使用的文件,因此只有在用户提供的文件不存在时才会使用JAR中的文件。
我正在使用Class.getResource(path),它应该能够找到相对和绝对(带有前导斜杠)文件。
在JAR中给出以下文件层次结构:
<jar-file>/SomeClass.class
<jar-file>/conf/config-file.txt
和
的可选文件<some-classpath-folder>/conf/config-file.txt
我正在尝试执行类似下面的代码段,以便只有在类路径的绝对文件夹conf中找不到该文件时,它才会从JAR内的相对conf文件夹中加载:
Class clasz = SomeClass.class;
res = clasz.getResource("/conf/config-file.txt"); // absolute file not found, note leading-slash
if (res == null)
res = clasz.getResource("conf/config-file.txt"); // relative file is found, No leading-slash
找到相关文件(来自JAR内),但类路径中的绝对文件不是。
调用System.getProperty(“java.class.path”)显示&lt; some-classpath-folder&gt;文件夹,所以看起来类路径设置正确,但找不到&lt; some-classpath-folder&gt; /conf/config-file.txt中的文件。
有没有办法知道在搜索文件时扫描了哪些文件夹?或者对这里出了什么问题的任何建议?
TIA
答案 0 :(得分:1)
如果您完全依赖类路径资源,则可以使用类路径层次结构,程序运行方式等。可能可以工作,但它并不完全在您的控制之内。
IMO最好检查明确定义的路径,例如,通过系统属性(如-Dconfig=/path/to/config
),已知位置(如用户家中的文件)或属性API。