Java 为什么我的JLabel图标会导致NullPointerException错误,而这是导入图像和修复建议时生成的默认代码?

Java 为什么我的JLabel图标会导致NullPointerException错误,而这是导入图像和修复建议时生成的默认代码?,java,user-interface,netbeans,Java,User Interface,Netbeans,作为NetBeans的新手,我将按照此处所示的步骤向JLabel添加映像: 在任何人试图将我指向其他线程之前,我已经浏览了很多线程。很多人都说图像没有放在正确的位置等等,但是我这样做会不会出现这样的问题,因为我实际上是直接将图像导入到包中 我已经看了很多遍了,我的照片肯定在文件夹里。我也试过有人建议去掉路径上的第一个反斜杠,但这不起作用 下面是我在NetBeans中的项目的文件系统: Source Packages |_ com.mycompany.hangmangame | |_ Scr

作为NetBeans的新手,我将按照此处所示的步骤向JLabel添加映像:

在任何人试图将我指向其他线程之前,我已经浏览了很多线程。很多人都说图像没有放在正确的位置等等,但是我这样做会不会出现这样的问题,因为我实际上是直接将图像导入到包中

我已经看了很多遍了,我的照片肯定在文件夹里。我也试过有人建议去掉路径上的第一个反斜杠,但这不起作用

下面是我在NetBeans中的项目的文件系统:

Source Packages
|_ com.mycompany.hangmangame
|    |_ Screen.java
|_ com.mycompany.hangmangame.images
     |_ FailStamp.png
默认生成的代码是:

// logo is the name of my JLabel
logo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/mycompany/hangmangame/images/FailStamp.png"))); // NOI18N
线程“AWT-EventQueue-0”java.lang.NullPointerException中的异常 位于java.desktop/javax.swing.ImageIcon.(ImageIcon.java:217) 位于com.mycompany.hangmangame.Screen.initComponents(Screen.java:89) 在com.mycompany.hangmangame.Screen.(Screen.java:24) 在com.mycompany.hangmangame.Screen$1.run(Screen.java:156) 位于java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313) 位于java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770) 位于java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) 位于java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) 位于java.base/java.security.AccessController.doPrivileged(AccessController.java:389) 位于java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) 位于java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740) 位于java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) 位于java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) 位于java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) 位于java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) 位于java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 位于java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
我不知道;我不会使用Netbeans,但我会检查它是否正在将映像复制到二进制文件夹结构(
bin/com/..
build/com/..
或项目设置的任何内容-在
*.class
文件所在的位置)-您可以尝试
System.out.println(getClass().getResource(“/com/mycompany/hangmangame”))
查看正在导出的
图像
文件夹的位置。(路径
images/FailStamp.png
也应该有效)@CarlosHeuberger非常感谢!这帮助我解决了这个问题,我提到的教程让这个包最终出现在了um…中的.java文件,而不是.class文件!没问题,小提示:检查
getresource
的返回,如果
null
,则显示/打印错误消息(包括名称和路径)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at java.desktop/javax.swing.ImageIcon.<init>(ImageIcon.java:217)
    at com.mycompany.hangmangame.Screen.initComponents(Screen.java:89)
    at com.mycompany.hangmangame.Screen.<init>(Screen.java:24)
    at com.mycompany.hangmangame.Screen$1.run(Screen.java:156)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)