this.getClass()。getClassLoader()。getResource(“…”)和NullPointerException

发布于 2021-01-29 20:16:22

我在Eclipse Helios中创建了一个带有单个子模块的最小Maven项目。

src / test / resources文件夹中,我放置了一个文件“ install.xml”。在文件夹src / test / java中,我创建了一个包含单个类的包,该类执行以下操作:

  @Test
  public void doit() throws Exception {
    URL url = this.getClass().getClassLoader().getResource("install.xml");
    System.out.println(url.getPath());

  }

但是当我将代码作为junit 4单元测试运行时,我只是得到了NullPointerException。以前,这已经工作了一百万次了。有任何想法吗?

我遵循了此指南:

http://www.fuyun.org/2009/11/how-to-read-input-files-in-maven-junit/

但仍然出现相同的错误。

关注者
0
被浏览
448
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    使用时

    this.getClass().getResource("myFile.ext")
    

    getResource将尝试查找相对于包的资源。如果您使用:

    this.getClass().getResource("/myFile.ext")
    

    getResource 会将其视为绝对路径,并像完成操作一样简单地调用类加载器。

    this.getClass().getClassLoader().getResource("myFile.ext")
    

    之所以不能/ClassLoader路径中使用前导,是因为所有ClassLoader路径都是绝对的,因此路径中的/第一个字符不是有效的。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看