光头骑士 2020-04-15 18:15 采纳率: 0%
浏览 505

Java ClassLoader路径问题导致空指针

问题描述:
在学习类加载的时候,遇到了路径问题导致的空指针。
用的是JDK1.8


测试代码如下:


@Test
    public void test3() throws Exception {
        String path = "src/main/java/com/cgy/study/testReflection/jdbc.properties";
        /*ClassLoader loader = this.getClass().getClassLoader();
        InputStream resourceAsStream = loader.getResourceAsStream(path);*/

        InputStream resourceAsStream = new FileInputStream(path);

        Properties p = new Properties();
        p.load(resourceAsStream);
        System.out.println(p.getProperty("username"));
        System.out.println(p.getProperty("password"));
    }


当用new FileInputStream(path);方式的时候,是可以获取到jdbc.properties配置文件内容的。但是当我换成loader.getResourceAsStream(path);方法的时候,就变成了空指针。


 @Test
    public void test3() throws Exception {
        String path = "src/main/java/com/cgy/study/testReflection/jdbc.properties";
        ClassLoader loader = this.getClass().getClassLoader();
        InputStream resourceAsStream = loader.getResourceAsStream(path);

//        InputStream resourceAsStream = new FileInputStream(path);

        Properties p = new Properties();
        p.load(resourceAsStream);
        System.out.println(p.getProperty("username"));
        System.out.println(p.getProperty("password"));
    }

图片说明



同样的路径,为啥不同的结果,求高手给个解释。



文件的绝对路径是:
F:\ideaWorkSpace\study\src\main\java\com\cgy\study\testReflection\jdbc.properties


java代码的绝对路径是:
F:\ideaWorkSpace\study\src\main\java\com\cgy\study\testReflection\TestReflection.java

  • 写回答

1条回答 默认 最新

  • 吃饭最重要~ 2022-05-11 14:31
    关注

    已解决,你也试试。你的路径文件名从scr以下写,因为他不是默认是scr下的路径,你写的路径超范围了相当于。改成:main\java\com\cgy\study\testReflection\TestReflection.java

    评论

报告相同问题?