gpt4 book ai didi

Java正确加载属性文件

转载 作者:行者123 更新时间:2023-11-29 07:00:52 24 4
gpt4 key购买 nike

我有以下项目结构:

ProjectName/src/java/com/main/Main.java

我在以下文件夹中有一个属性文件:

ProjectName/config/settings.properties

现在我尝试在 Main.java 中加载属性文件:

InputStream input = Main.class.getResourceAsStream("/config/settings.properties");
Properties prop = System.getProperties();
prop.load(input);

但这行不通。怎么做才是正确的?

编辑:我收到以下错误:

Exception in thread "main" java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Unknown Source)
at java.util.Properties.load0(Unknown Source)
at java.util.Properties.load(Unknown Source)

Edit2:现在它适用于 Eclipse。我做了以下操作(改编自 getResourceAsStream() is returning null. Properties file is not loading )

1) 这个目录[config] 必须放到“构建路径”中。在 Package Explorer 或 Project Explorer View 中右键单击目录,选择“Build Path”,然后选择“Use as Source Folder”。注意:此构建路径将是项目的类路径,当您运行它时。

2) 由于配置目录现在是您的类路径的一部分并包含您的属性文件,您可以简单地使用 InputStream input = Server.class.getClassLoader().getResourceAsStream("settings.properties") 加载它;

这适用于 eclipse,但不适用于 jar。我想我还必须以某种方式将构建路径添加到 ant 脚本中。

我该怎么做?

Edit3:如果我从 jar 的配置文件夹中取出 settings.properties,那么它就可以工作。为什么?我也想把它放在 jar 的配置文件夹中。

最佳答案

使用以下内容:

InputStream input = Main.class.getResourceAsStream("../../../../config/settings.properties");
Properties prop = System.getProperties();
prop.load(input);

通过添加 ../ 我在您的文件系统中退步了 1 步。在您的代码中,您使用的是 /config.....,这意味着 C:/config..... (如果它在 C 驱动器中) .

以下内容也适用于您的情况。 (但不在压缩文件中)

InputStream input = new FileInputStream("config/settings.properties");
Properties prop = System.getProperties();
prop.load(input);

关于Java正确加载属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26358139/

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