getClass()。getResource(...)找不到我的图像

时间:2014-07-15 15:02:12

标签: java

我运行我的应用程序,但我得到以下异常。

Exception in thread "main" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(ImageIcon.java:167)
    at view.View.getBookmarkPanel(View.java:162)
    ...

错误的来源就在这里。

JButton addButton = new JButton(new ImageIcon(this.getClass().getResource("img/plus.png")));

我理解异常意味着它不能通过提供的目录分配请求的图像,说明图像不存在。这让我感到困惑,因为图像确实存在。

My Documents\workspace\PersonalProjectUpdate\src\main\resources\img\plus.png

代码工作正常,直到我将文件组织到包中,即使在我解除此更改后仍然发生错误,但它不应该影响应用程序从资源文件夹中分配文件的方式。

为什么这样做,有人可以帮助我吗?

1 个答案:

答案 0 :(得分:4)

Class#getResource将您传递给它的路径视为相对于该类的包,因此在您的情况下,它正在寻找src\main\resources\view\img\plus.png

要解决此问题,请添加前导斜杠以指示路径是绝对路径:

JButton addButton = new JButton(new ImageIcon(this.getClass().getResource("/img/plus.png")));