复现

在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>
文章目录