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。帮助
答案 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(...){...}