【发布时间】:2014-12-09 02:08:37
【问题描述】:
我的项目结构如下:
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 视图中的目录,选择“Build Path”,然后选择“Use as Source Folder”。注意:此构建路径将是项目的类路径,当您运行它时。
2) 由于 config 目录现在是您的类路径的一部分并包含您的属性文件,您可以简单地使用 InputStream input = Server.class.getClassLoader().getResourceAsStream("settings.properties"); 加载它
这适用于 Eclipse,但不适用于 jar。我想我还必须以某种方式将构建路径添加到 ant 脚本中。
我该怎么做?
Edit3:如果我将 settings.properties 从 jar 中的 config 文件夹中取出,那么它可以工作。为什么?我也希望它在 jar 的配置文件夹中。
【问题讨论】:
-
如果您能告诉我们您所面临的错误将会很有帮助。我们将能够为您提供更好的帮助。
-
返回什么错误?
-
@afzalex 还是不行。
-
输出为:C:\Users\myName\workspace\ProjectName。可能是配置不在类路径中的问题吗? IE。我的主类在 ProjectName/src/java.... 但我的配置在 ProjectName/config... 所以他们不共享 src 文件夹。
-
对不起,我没有标明您使用
Main类作为参考。但考虑一下我的回答,我相信它会起作用。 (我删除了我的 cmets,因为我所说的关于调用类的事情不是在以类作为参考的情况下)。
标签: java classloader properties-file