java - 读取.properties配置文件 空指针异常
PHPz
PHPz 2017-04-18 09:16:43
[Java讨论组]

碰到一个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

学习是最好的投资!

全部回复(3)
高洛峰

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

PHP中文网

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,看一下你的资源文件是不是在那个地方。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号