“我怎样才能解决问题?”;javax.swing.ImageIcon<;初始化>;(来源不明)“;?

“我怎样才能解决问题?”;javax.swing.ImageIcon<;初始化>;(来源不明)“;?,java,image,nullpointerexception,imageicon,Java,Image,Nullpointerexception,Imageicon,我正在制作一个简单的乒乓球游戏程序,我的问题来自于我想设置一个图像图标的主要方法,它向我射击了一个NullPointerException 我正在使用EclipseIDE2019,06和Java编译器12.0.1。我使用的图像是.jpg。 我试图更改图像的目录,但什么也没有:(。 映像的目录位于主类的同一文件夹中 这是我的帧代码: 公共类菜单{ 私有JFrame; /** *启动应用程序。 */ 公共静态void main(字符串[]args){ invokeLater(新的Runnable()

我正在制作一个简单的乒乓球游戏程序,我的问题来自于我想设置一个图像图标的主要方法,它向我射击了一个NullPointerException

我正在使用EclipseIDE2019,06和Java编译器12.0.1。我使用的图像是.jpg。 我试图更改图像的目录,但什么也没有:(。 映像的目录位于主类的同一文件夹中

这是我的帧代码:

公共类菜单{
私有JFrame;
/**
*启动应用程序。
*/
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
公开募捐{
试一试{
菜单窗口=新菜单();
window.frame.setVisible(true);
window.frame.setLocationRelativeTo(空);
window.frame.setTitle(“PONG!”);
}捕获(例外e){
e、 printStackTrace();
}
}
});
}
/**
*创建应用程序。
*/
公共菜单(){
frame.setIconImage(newImageIcon(Menu.class.getResource(“/icon.jpg”)).getImage();
初始化();
}
这就是错误信息:

java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(Unknown Source)
    at gui.Menu.<init>(Menu.java:57)
    at gui.Menu$1.run(Menu.java:42)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
java.lang.NullPointerException
位于javax.swing.ImageIcon。(未知源)
在gui.Menu.(Menu.java:57)
在gui.Menu$1.run(Menu.java:42)
在java.awt.event.InvocationEvent.dispatch(未知源)处
位于java.awt.EventQueue.dispatchEventImpl(未知源)
位于java.awt.EventQueue.access$500(未知源)
在java.awt.EventQueue$3.run处(未知源)
在java.awt.EventQueue$3.run处(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(未知源)
位于java.awt.EventQueue.dispatchEvent(未知源)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(未知源)
位于java.awt.EventDispatchThread.pumpEventsForFilter(未知源)
位于java.awt.EventDispatchThread.pumpEventsForHierarchy(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
位于java.awt.EventDispatchThread.run(未知源)

我希望你能帮我解决这个问题。谢谢。

我猜
菜单的第57行。java
是这一行:

frame.setIconImage(new ImageIcon(Menu.class.getResource("/icon.jpg")).getImage());

看起来
frame
尚未初始化,因此为空。这就是为什么在使用Maven构建系统(例如netbeans 11.3、Maven 3.3.x)时,会出现
NullPointerException

,您必须注意资源的放置位置。“/icon.jpg”路径是相对于资源目录的。请尝试创建一个名为“resources”(原文如此!)的目录作为java主源目录的子目录。例如,“resources”的路径应为

<Project root>/src/main/resources
/src/main/resources

您可以将图像文件放在这个目录或子目录/src/main/resources/icons/icon.jpg

Dude中,谢谢打开我的眼睛。正如您所说,框架还没有初始化,所以我在init方法上写了代码行,所以工作正常。谢谢您的回答:)