繁体   English   中英

从Java中的类路径读取配置文件,默认为JAR

[英]Read config file from classpath in Java with default in JAR

更新:事实证明,在我进行的某些测试中,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”)将显示<some-classpath-folder>文件夹,因此看起来类路径已正确设置,而<some-classpath-folder> / conf / config中的文件找不到-file.txt。

有没有办法知道在搜索文件时扫描了哪些文件夹? 或对这里出什么问题有任何建议吗?

TIA

如果仅依靠类路径资源,则只能依靠类路径层次结构,程序的运行方式等。这可能有效,但是并不完全在您的控制范围之内。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM