关于properties报空指针异常的原因

在写jdbc的时候,将一些连接属性放在了properties文件中,然后用Properties去读取。

InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("db.properties");
            Properties properties = new Properties();
            properties.load(in);

在读取的时候一直显示空指针异常:

C:\Environment\Java\jdk1.8.0\bin\java.exe "-javaagent:D:\IntelliJ IDEA 2019.3.5\lib\idea_rt.jar=63215:D:\IntelliJ IDEA 2019.3.5\bin" -Dfile.encoding=UTF-8 -classpath C:\Environment\Java\jdk1.8.0\jre\lib\charsets.jar;C:\Environment\Java\jdk1.8.0\jre\lib\deploy.jar;C:\Environment\Java\jdk1.8.0\jre\lib\ext\access-bridge-64.jar;C:\Environment\Java\jdk1.8.0\jre\lib\ext\cldrdata.jar;C:\Environment\Java\jdk1.8.0\jre\lib\ext\dnsns.jar;C:\Environment\Java\jdk1.8.0\jre\lib\ext\jaccess.jar;C:\Environment\Java\jdk1.8.0\jre\lib\ext\jfxrt.jar;C:\Environment\Java\jdk1.8.0\jre\lib\ext\localedata.jar;C:\Environment\Java\jdk1.8.0\jre\lib\ext\nashorn.jar;C:\Environment\Java\jdk1.8.0\jre\lib\ext\sunec.jar;C:\Environment\Java\jdk1.8.0\jre\lib\ext\sunjce_provider.jar;C:\Environment\Java\jdk1.8.0\jre\lib\ext\sunmscapi.jar;C:\Environment\Java\jdk1.8.0\jre\lib\ext\sunpkcs11.jar;C:\Environment\Java\jdk1.8.0\jre\lib\ext\zipfs.jar;C:\Environment\Java\jdk1.8.0\jre\lib\javaws.jar;C:\Environment\Java\jdk1.8.0\jre\lib\jce.jar;C:\Environment\Java\jdk1.8.0\jre\lib\jfr.jar;C:\Environment\Java\jdk1.8.0\jre\lib\jfxswt.jar;C:\Environment\Java\jdk1.8.0\jre\lib\jsse.jar;C:\Environment\Java\jdk1.8.0\jre\lib\management-agent.jar;C:\Environment\Java\jdk1.8.0\jre\lib\plugin.jar;C:\Environment\Java\jdk1.8.0\jre\lib\resources.jar;C:\Environment\Java\jdk1.8.0\jre\lib\rt.jar;D:\IdeaProjects\JDBC\target\classes;C:\Environment\Mavenrepository\mysql\mysql-connector-java\8.0.21\mysql-connector-java-8.0.21.jar;C:\Environment\Mavenrepository\com\google\protobuf\protobuf-java\3.11.4\protobuf-java-3.11.4.jar com.gsy.lesson02.TestInsert
java.lang.NullPointerException
	at java.util.Properties$LineReader.readLine(Properties.java:434)
	at java.util.Properties.load0(Properties.java:353)
	at java.util.Properties.load(Properties.java:341)
	at com.gsy.lesson02.utils.JDBCUtils.<clinit>(JDBCUtils.java:19)
	at com.gsy.lesson02.TestInsert.main(TestInsert.java:17)
java.sql.SQLException: The url cannot be null
	at java.sql.DriverManager.getConnection(DriverManager.java:649)
	at java.sql.DriverManager.getConnection(DriverManager.java:247)
	at com.gsy.lesson02.utils.JDBCUtils.getConn(JDBCUtils.java:35)
	at com.gsy.lesson02.TestInsert.main(TestInsert.java:17)

Process finished with exit code 0

于是我debug了一下
在这里插入图片描述
发现获取连接的时候properties中的属性没有读取到,所以报了空指针异常,那么就是properties路径的问题导致文件没有被读取到。
仔细检查了一下是放在src目录下的没问题,于是我想可能是class.getClassLoader().getResourceAsStream(“db.properties”)路径的问题,于是搜了一下发现path是默认从class path根目录下获取,搜了一下发现class path的根目录就是src没有问题,那问题到底出在了哪里?

**答案:**本项目是使用maven来编写的,在maven中,classpath的根目录其实是resources文件夹,将properties文件移到resources文件夹就可以解决问题了!!

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值