(java) 读取.properties配置文件 空指针异常

碰到一个properties的资源文件,读取报空指针,什么原因?
我使用下面2中方式读取,都是空指针。

Properties pro = new Properties; pro.loadDemo.class.getResourceAsStream"/project/db.properties"; pro.loadThread.currentThread.getContextClassLoader.getResourceAsStream"project/db.properties";

Exception:

Exception in thread "main" java.lang.NullPointerException at java.util.Properties$LineReader.readLineUnknown Source at java.util.Properties.load0Unknown Source at java.util.Properties.loadUnknown Source at project.HashMap.Demo.mainDemo.java:23

空指针异常,看看是不是23行有变量初始化为空或者没有初始化!

1、Demo.class.getClassLoader.getResourceAsStream,资源配置文件放在项目CLASSPATH路径下,加载时直接给文件名称;

2、或者使用java.util.ResourceBundle类加载资源配置文件;

Demo.class.getResourceAsStream"/project/db.properties"
Thread.currentThread.getContextClassLoader.getResourceAsStream"project/db.properties"

出现空指针异常是因为上面读取资源文件的语句返回的是空指针,也就是没有正确的定位到资源文件(路径错误)

建议题主弄清楚Demo.class.getResourceAsStreamThread.currentThread.getContextClassLoader.getResourceAsStream定位的路径。再次遇到这类问题就能迎刃而解了。

试一下输出以下三个语句,其中第三个语句跟Thread.currentThread.getContextClassLoader类似

Demo.class.getResource"".getPath
Demo.class.getResource"/".getPath
Demo.class.getClassLoader.getResource"".getPath;

第一个语句得到的是Demo类所在的绝对路径,第二、第三个语句得到的是项目CLASSPATH的绝对路径。题主你写的那两个读取资源的语句就是定位到以下路径 项目CLASSPATH/project/db.properties,看一下你的资源文件是不是在那个地方。

发表评论

电子邮件地址不会被公开。 必填项已用*标注