使用路径名加载图像文件时出现NullPointerException错误

4
到处找了还是找不到使用NetBeans解决这个问题的方法。
当我使用以下代码通过路径加载文件时:
Image owl = new ImageIcon(this.getClass().getResource("/images/owl.gif")).getImage();

我遇到了一个NullPointerException错误。我在某个地方读到建议创建一个新文件夹,并将其作为项目的源文件,但这并没有帮助。我尝试了在这个站点和其他站点找到的多个建议,但我没有得到任何结果。
我开始怀疑我输入路径的方式是否有问题,但我按照其他地方显示的方式精确地进行了操作。我已经尝试了最近几天可以找到的每个示例的每个组合来解决这个问题,但没有什么作用。

1
请指定您的文件夹结构是如何布置的。如果此代码在jar中运行,则应该有一个名为images的包(即文件夹),并且在其中应存在owl.gif - c.s.
@SotiriosDelimanolis 你所说的classpath根目录是什么意思? - Jeremy Johnson
1
@Jeremy Java应用程序是在类路径下运行的。类路径中的所有内容都被视为资源(类、图像、属性文件等),可以通过getResource()方法检索到。如果Java类位于包com.company.model中,则相对于类路径的根目录,它将出现在/com/company/model/...中。可以将其视为目录结构。 - Sotirios Delimanolis
@SotiriosDelimanolis 右键单击无法更改构建路径选项,但图像已被设置为项目的源文件。 - Jeremy Johnson
1
@nIcEcOw 我一直在谷歌上搜索 NetBeans 的相关内容,但是没有找到任何有用的信息。哇,如果以后还有其他问题,我一定会把这个链接保存到书签中。谢谢。 - Jeremy Johnson
显示剩余4条评论
2个回答

3
似乎您的类路径中没有包含“images”文件夹。在Eclipse中,它不属于所谓的Build Path。
右键单击“images”文件夹,选择“Build Path”并使用作为源文件夹。每当您通过Eclipse运行应用程序时,该文件夹将添加到类路径中。如果您这样做,需要更改您的路径为:
Image owl = new ImageIcon(this.getClass().getResource("/owl.gif")).getImage();

因为现在所有的images都将直接放在类路径上。

相反,您可以在普通的src文件夹下创建一个名为images的包,并将其称为

Image owl = new ImageIcon(this.getClass().getResource("/images/owl.gif")).getImage();

2
OP 也需要将他的路径更改为 /owl.gif - Ravi K Thapliyal
1
@RaviThapliyal 是的,确实如此。 - Sotirios Delimanolis
@JeremyJohnson 不用谢。你可以根据你设置的源文件夹和包来选择做两者中的任何一个。 - Sotirios Delimanolis
请注意,在NetBeans中,您无法右键单击并显示构建路径。 您必须单击运行->项目配置->自定义,然后在源选项卡下将文件夹添加为源。 - Jeremy Johnson
1
@SotiriosDelimanolis 哈哈。问题的第一行完全列出了NetBeans,但没关系。我们解决了它,感谢您的时间。 - Jeremy Johnson
显示剩余4条评论

1

.getResource()在找不到资源时返回null。这就是你得到null的原因。

你的问题是owl.gif的路径不正确。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接