Java getClass().getResource(…)不';我找不到我的形象

Java getClass().getResource(…)不';我找不到我的形象,java,Java,我运行我的应用程序,得到以下异常 Exception in thread "main" java.lang.NullPointerException at javax.swing.ImageIcon.<init>(ImageIcon.java:167) at view.View.getBookmarkPanel(View.java:162) ... 我理解异常意味着它无法通过提供的目录分配请求的映像,并声明映像不存在。这让我困惑,因为图像确实存在 My Do

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

Exception in thread "main" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(ImageIcon.java:167)
    at view.View.getBookmarkPanel(View.java:162)
    ...
我理解异常意味着它无法通过提供的目录分配请求的映像,并声明映像不存在。这让我困惑,因为图像确实存在

My Documents\workspace\PersonalProjectUpdate\src\main\resources\img\plus.png
在我将文件组织到包中之前,代码一直运行良好,即使在我取消了此更改后,错误仍然会发生,但是它不应影响应用程序如何从资源文件夹分配文件

它为什么这样做,有人能帮我吗?

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

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

JButton addButton = new JButton(new ImageIcon(this.getClass().getResource("/img/plus.png")));
将传递给它的路径视为相对于类的包的路径,因此在本例中,它将查找
src\main\resources\view\img\plus.png

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

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

感谢你的努力;当网站决定让我关闭时,我会勾选你的答案。如果类在“com.acme”包中,那么OP的代码将查找“/com/acme/img/plus.png”。。。在JAR文件中。(它不会在
src
目录树中查找)是的,尽管代码查找资源的确切位置取决于类加载器;当网站决定让我关闭时,我会勾选你的答案。如果类在“com.acme”包中,那么OP的代码将查找“/com/acme/img/plus.png”。。。在JAR文件中。(它不会在
src
目录树中查找)是的,但代码查找资源的确切位置取决于类加载器。