代码之家  ›  专栏  ›  技术社区  ›  NullPointerException

类加载器.getSystemClassLoader().getResourceAsStream在克隆项目后返回null

  •  0
  • NullPointerException  · 技术社区  · 6 年前

    我使用以下行从res文件夹获取图像:

    shell.setImage(new Image(display, ClassLoader.getSystemClassLoader().getResourceAsStream("icon_128.png")));
    

    该文件位于项目的“res”文件夹中。

    在我将我的项目上传到Bitbucket中的Git回购之前,它工作得非常好。在克隆并导入项目之后,现在我的项目崩溃了,因为 getResourceAsStream("icon_128.png") 返回null。

    在项目的两个版本中,文件都位于“res”文件夹中。

    这会发生什么?

    1 回复  |  直到 4 年前
        1
  •  0
  •   rzwitserloot    6 年前

    git与此无关。你没有提供足够的细节来确定发生了什么,但是我想到了两个明显的问题:

    getResourceAsStream 查找命名文件的位置与java查找类文件的位置相同:类路径。您正在从编辑器或 java 在命令行上(在这种情况下,如果您使用 -jar

    [2] 这不是正确的方法。正确的方法是 ClassThisCodeIsIn.class.getResourceAsStream("/icon_128.png")

    注意:当您克隆并重新构建时,“build”目录被有效地删除了,因为您没有将它们签入源代码管理。这就是为什么它以前起作用,现在不起作用。git不是罪魁祸首;您或您的IDE将icon_128.png复制到build dir,并且每次克隆git repo时都需要重复这一步骤。一个构建工具自动化了这个步骤,并确保您可以从源代码管理中执行一个新的签出,然后调用构建工具,在它完成之后一切都会很好。