gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:04:31 24 4
gpt4 key购买 nike

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

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

TIA

最佳答案

如果您仅依赖类路径资源,那么您将受到类路径层次结构、程序运行方式等的影响。这可能有效,但并不完全在您的控制范围内。

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

关于java - 从Java中的类路径读取配置文件,默认在JAR中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21610779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com