复现
在javase复习第四弹的反射案例中,运行框架测试类后会有空指针异常。
//1.加载配置文件
//1.1创建properties对象
Properties properties = new Properties();
//1.2加载配置文件,转换为集合
//1.2.1获取配置文件
InputStream rs = ReflectTest.class.getClassLoader().getResourceAsStream("pro.properties");
properties.load(rs);
//2.获取配置文件中定义的数据
String className = properties.getProperty("className");
String methodName = properties.getProperty("methodName");
Exception in thread "main" 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 reflect.ReflectTest.main(ReflectTest.java:20)
分析
在配置properties文件时出现空指针异常基本是由于读取不到配置文件导致的。
会不会是我的配置文件路径写错了么,我在编辑器界面时按住Ctrl加鼠标左键时是可以打开pro,properties
文件的,所以排除掉文件路径的问题
查找资料
经过在网上的多处查询后
定位到了可能是使用了maven出现的问题
原因是生成的项目中没有生成相关的的配置文件,导致读取不到,所以通过pom文件去设置路径
解决方法
在maven工程中打开pom.xml
加入以下标签即可
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
</build>