Java:来自class.getResource(…)的NullPointerException

我正在编写一个小应用程序,当我尝试创建一个ImageIcon时,我总是遇到exception。 这个例外代码引起了exception:

prayerLevel.setIcon(new ImageIcon(getClass().getResource("/icons/icon_prayer.png"))); 

现在在我的程序中,文件夹/ icons /确实存在。 我不知道它是否有所不同但是类文件在一个包中,其中icons文件夹在项目文件夹中(当你看到bin和src文件夹时)。

我已经四处寻找,我找不到可以帮助我解决问题的解决方案。 也许你们中的任何人都可以帮忙吗?

编辑:有人要求我的文件夹层次结构:

文件夹层次结构

我知道类文件与图标不在同一文件夹中,但是我已经创建了应用程序,我必须从不同的文件夹加载文件并执行/文件夹/始终用于工作。

编辑2:

 System.out.println(getClass().getResource("/icons/icon_prayer.png") == null); 

打印真实。

我相信NPE是从ImageIcon构造函数抛出的,因为getResource返回null

请尝试以下方法:

 getClass().getClassLoader().getResource("/icons/icon_prayer.png") 

要么:

 ClassLoader.getSystemResource("/icons/icon_prayer.png") 

据我所知, getResource()将查看已知资源的位置,换句话说,如果文件夹/icons/不被视为资源文件夹,它将不会像您预期的那样。 据我所知,有两种解决方法:

1)将icons文件夹设置为应用程序的资源,然后你可以使用getResource()例如URL css_url = getClass().getResource("/resource/style.css");

有关此选项的更多信息,请参阅http://sofzh.miximages.com/java/ middle.gif”,“一个漂亮但毫无意义的splat”);

希望这有帮助,祝你好运!

我将我的音乐,图像等添加到添加到构建路径的文件夹中。 然后我就用了

 URL url="CurrentClass".class.getClassLoader().getResource("media file name not the path"); setIconImage(new ImageIcon(url.getPath()).getImage()); 

设置图像图标。

旧线程,但因为我刚刚碰到类似的问题…

我正在使用Eclipse,并使用系统命令( cp )将文件复制到“resources”文件夹。 但是,eclipse抛出了NullPointerException因为我没有刷新“resources”文件夹。 所以文件在那里,但Eclipse没有看到它。

所以在Eclipse中:“Package Explorer” – >“resources” – >鼠标右键单击 – >刷新。 这为我修好了。

唯一可以在这行代码中抛出NullPointerException东西就是第一个. ,这意味着prayerLevel为null。