我运行我的应用程序,但我得到以下异常。
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
代码工作正常,直到我将文件组织到包中,即使在我解除此更改后仍然发生错误,但它不应该影响应用程序从资源文件夹中分配文件的方式。
为什么这样做,有人可以帮助我吗?
答案 0 :(得分:4)
Class#getResource
将您传递给它的路径视为相对于该类的包,因此在您的情况下,它正在寻找src\main\resources\view\img\plus.png
。
要解决此问题,请添加前导斜杠以指示路径是绝对路径:
JButton addButton = new JButton(new ImageIcon(this.getClass().getResource("/img/plus.png")));