gpt4 book ai didi

Java getResourceAsStream 返回 NullPointerException?

转载 作者:太空宇宙 更新时间:2023-11-04 09:59:32 26 4
gpt4 key购买 nike

这无疑会被标记为重复,但我想我还是会尝试一下。我查看了所有提出的相关问题,并在网上进行了搜索,但似乎找不到该问题的解决方案。
我正在尝试使用 Java FX diffuseMap 来纹理 Box。然而,当使用时

PhongMaterial material = new PhongMaterial();
material.setDiffuseMap(new Image(getClass().getResourceAsStream("/Eternity/Images/ice.png")));
b.setMaterial(material);

我得到一个 NullPointerException;

java.lang.NullPointerException: Input stream must not be null

我尝试过弄乱文件名、路径、完成相同任务的不同方法(所有这些仍然涉及 InputStreams),甚至复制和粘贴实际文件路径(使用 Intellij 的“复制文件路径”按钮),但我似乎无法解决这个问题。它似乎对错误没有任何影响。

这是项目层次结构,不包括主项目文件夹。 project hierarchy

任何和所有的帮助将不胜感激!

最佳答案

Class.getResourceAsStream() 使用类加载器从类路径加载资源。因此,为了让您的代码正常工作,包含 Eternity 目录的目录应该位于类路径中。因为不是,所以类加载器无法找到该资源,并且返回 null,如文档所述。

因此,要么更改正在运行的程序的类路径,要么将图像移动到源文件夹,以便您的 IDE(希望还有构建/打包工具)将图像复制到编译类文件的目录中。然后当然使用正确的路径(即完整的包名称,但用斜杠而不是点,并以斜杠开头)。如果图像位于 src/foo/bar/ice.png 中,则包为 foo.bar,因此要使用的路径为 /foo/bar/ice.png

关于Java getResourceAsStream 返回 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53682558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com