java - 读取.properties配置文件 空指针异常
PHPz
PHPz 2017-04-18 09:16:43
0
3
1095

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

Properties pro 
          = new Properties();
          pro.load(Demo.class.getResourceAsStream("/project/db.properties"));
          pro.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("project/db.properties"));

Exception:

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)
    at project.HashMap.Demo.main(Demo.java:23)
PHPz
PHPz

学习是最好的投资!

Antworte allen(3)
小葫芦

空指针异常,看看是不是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.getResourceAsStream()Thread.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,看一下你的资源文件是不是在那个地方。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage