读取属性文件时出现空指针异常

时间:2012-05-04 10:32:11

标签: java intellij-idea maven-3

propsdatabase = new Properties();
InputStream dbin = getClass().getResourceAsStream("/properties/database.properties");
propsdatabase.load(dbin);

我正在通过名为'properties'的文件夹中名为'database.properties'的属性文件读取我的数据库连接详细信息。 Jus在根目录下面。

在Eclipse中导出jar时代码完全正常。

但我在IntelliJ中使用了Maven项目来获取jar。它抛出NUll指针异常。

由于dbin的值为NULL。(我也打印并检查过)。

我得出结论,读取文件时无法识别路径。

现在使用IntelliJ可以解决问题。

在Eclipse中作为jar导出时,jar虽然包含属性文件夹但未检测到IT。帮助

4 个答案:

答案 0 :(得分:2)

getResourceAsStream返回null的原因是/properties/database.properties文件不在Maven类路径中。

将您的属性文件夹移动到/src/main/resources文件夹下,当Maven创建一个jar文件时,将包含/properties/database.properties资源,您将停止获取NPE。

答案 1 :(得分:1)

是的,getResourceAsStream毫无疑问会返回null。我怀疑你的jar文件不包含该文件。尝试运行:

jar tvf yourfile.jar

检查。接下来,检查jar文件的构建步骤。如果没有看到构建文件,很难说出错了,所以如果在查看步骤时没有向你跳出来,请编辑你的问题以包含这些信息。

答案 2 :(得分:0)

你的maven构建步骤是否包含jar中的属性文件?检查生成的jar文件。如果您不知道如何总是重命名它并在末尾添加“.zip”并打开它。

答案 3 :(得分:0)

您可以尝试使用路径和FileInputStream读取属性文件:

Properties properties = new Properties();
FileInputStream input = null;
try {
   input = new FileInputStream(new File(CONFIGURATION_FILE));
   properties.load(input);
}catch(...){...}