properties配置文件空指针异常问题解决
最近在写JDBC,在对JDBC类进行封装的过程中出现了properties空指针异常。话不多说,贴代码。
static {
try{
System.out.println(JdbcUtil.class.getClassLoader().getResource("").getPath());
InputStream inputStream=JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties");
Properties properties=new Properties();
properties.load(inputStream);
driver=properties.getProperty("driver");
url=properties.getProperty("url");
usename=properties.getProperty("usename");
password=properties.getProperty("password");
Class.forName(driver);
}catch (Exception ex){
ex.printStackTrace();
}
我的资源配置文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf8&useSSL=true
usename=root
password=123456
将properties文件放在src根目录下
但是出现了空指针异常,找不到properties文件位置,但是经百度,发现properties文件需要放在src根目录下,但是还是报错空指针,如下图。
在搜不到原因的情况,通过代码查找具体会去那里查询文件的位置,
System.out.println(JdbcUtil.class.getClassLoader().getResource("").getPath());
发现查找到的文件位置,是在maven自动生成的target文件夹下的class文件。
因此只需要将properties配置文件移到maven自动生成的target文件夹下的class文件夹下,就能解决空指针异常。
完美解决,解决了给个赞吧,xdm!
当然这种自己移动的方法也太sb了,推荐以下方法
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
再pom.xml文件的build模块下插入以下代码,就可以将文件成功打包到maven的target文件下。完美解决!