在JAV中使用JAVA中的classpath中读取配置文件



更新:在我进行的一些测试中,事实证明,classPath在IDE中未正确设置。下面的摘要正常工作。这不再是问题。

我正在尝试在文本文件中设置一些将部署在JAR中的属性/配置。

我希望用户能够提供自己的属性/配置文件,该文件将覆盖JAR中使用的文件,因此,只有在不存在用户提供的文件时才使用JAR中的一个文件。

我正在使用class.getResource(路径),它应该能够找到相对和绝对(带有领先的斜线)文件。

在JAR内给定以下文件层次结构:

<jar-file>/SomeClass.class
<jar-file>/conf/config-file.txt

和一个可选文件

<some-classpath-folder>/conf/config-file.txt

我正在尝试执行下面的摘要之类的操作,因此只有在classpath的绝对文件夹中找不到文件,它才会从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内部),但是classPath的绝对文件不是。

呼叫system.getProperty(" java.class.path")显示&lt; lt; lt; lt;文件夹,因此看起来classPath的设置正确,但未找到文件&lt; lt; lt; lt; lt; lt; lt; lt;

有没有办法知道扫描哪些文件夹以搜索文件?或关于这里出了什么问题的任何建议?

tia

如果您仅依靠classpath资源,则您处于classpath层次结构的摆布,程序的运行方式等。完全在您的控制范围内。

imo最好检查明确定义的路径,例如,通过诸如-Dconfig=/path/to/config之类的系统属性,诸如用户家中的文件之类的已知位置或属性API。

最新更新