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

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

当 jar 在 Eclipse 中导出时,代码运行良好。

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

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

我的结论是无法识别读取文件的路径。

现在 IntelliJ 一切正常。

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

4

4 回答 4

2

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

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

于 2012-05-04T10:39:09.290 回答
1

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

jar tvf yourfile.jar

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

于 2012-05-04T10:36:54.437 回答
0

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

于 2012-05-04T10:39:01.457 回答
0

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

Properties properties = new Properties();
FileInputStream input = null;
try {
   input = new FileInputStream(new File(CONFIGURATION_FILE));
   properties.load(input);
}catch(...){...}
于 2012-05-04T10:55:42.647 回答