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

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

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器