[英]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.