setIconImage intellij项目javax.swing

setIconImage intellij项目javax.swing,java,swing,intellij-idea,icons,Java,Swing,Intellij Idea,Icons,我在intellij中设置swing项目的图标时遇到了一个问题 我试过这个 iconpath = execPath + File.separator + "images" + File.separator + "icon.png"; this.setIconImage(new ImageIcon(getClass().getResource(iconpath)).getImage()); 但是得到 java.lang.ExceptionInIniti

我在intellij中设置swing项目的图标时遇到了一个问题

我试过这个

iconpath = execPath + File.separator +  "images" + File.separator + "icon.png";

this.setIconImage(new ImageIcon(getClass().getResource(iconpath)).getImage());
但是得到

java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(ImageIcon.java:217)
    at cgui.FormApp.<init>(FormApp.java:52)
    at controller.Main.<clinit>(Main.java:39)
Exception in thread "main"
得到

java.lang.ExceptionInInitializerError
Caused by: java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(ImageIO.java:1348)
    at cgui.FormApp.<init>(FormApp.java:58)
    at controller.Main.<clinit>(Main.java:39)
Exception in thread "main" 
java.lang.ExceptionInInitializeError
原因:java.lang.IllegalArgumentException:input==null!
在javax.imageio.imageio.read(imageio.java:1348)
在cgui.FormApp.(FormApp.java:58)
在controller.Main.(Main.java:39)
线程“main”中出现异常
我有我的项目结构像。你们知道怎么做吗


您将获得Main.java的相对图像路径

您应该使用getClassLoader()从绝对路径获取图像

this.setIconImage(new ImageIcon(getClass().getClassLoader().getResource("images/icon.png")).getImage());

获取了由以下原因引起的java.lang.ExceptionInInitializeError:线程“Main”中的java.lang.NullPointerException位于cgui.FormApp.(FormApp.java:51)处的javax.swing.ImageIcon.(ImageIcon.java:217)位于controller.Main.(Main.java:39)处的java.lang.NullPointerException,并将图像文件夹移动到java文件夹中。images/icon.png应位于target/classes中。我的图标文件已损坏。我试着在网上和其他人交流,效果很好。非常感谢你。
this.setIconImage(new ImageIcon(getClass().getClassLoader().getResource("images/icon.png")).getImage());