从JAR运行时,无法为Java Swing应用程序设置图像图标

从JAR运行时,无法为Java Swing应用程序设置图像图标,java,swing,embedded-resource,Java,Swing,Embedded Resource,我使用以下代码为Java应用程序设置图标图像: setIconImage(ImageIO.read(getClass().getResource("/javaapplication8/images/Bravo_Logo.png"))); 当我使用NetBeans运行它时,它运行正常,但当使用从NetBeans构建的JAR运行时,它失败地说: Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: in

我使用以下代码为Java应用程序设置图标图像:

setIconImage(ImageIO.read(getClass().getResource("/javaapplication8/images/Bravo_Logo.png")));
当我使用NetBeans运行它时,它运行正常,但当使用从NetBeans构建的JAR运行时,它失败地说:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: input == null!
        at javax.imageio.ImageIO.read(Unknown Source)
        at javaapplication8.Bravo_Startup.<init>(Bravo_Startup.java:51)
        at javaapplication8.Bravo_Startup$5.run(Bravo_Startup.java:329)
        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)
线程“AWT-EventQueue-0”java.lang.IllegalArgumentException中的异常:输入==null! 位于javax.imageio.imageio.read(未知源) 在javaapplication8.Bravo_启动时。(Bravo_启动。java:51) 在javaapplication8.Bravo_Startup$5.run(Bravo_Startup.java:329) 在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(未知源)
检查Jar内容并检查图标是否在您期望的位置。然后检查整个路径的大小写。
图像
图像
之间的差异可能并不意味着文件系统(如Windows)出现问题,但对于访问区分大小写的路径(如此处)来说,这一点很重要。注意到这一点真是太神奇了……在过去的两天里,我一直在为这一点绞尽脑汁。。。最后的问题是“Bravo_Logo.PNG”而不是“Bravo_Logo.PNG”…谢谢你,汤普森…你;欢迎光临。很高兴你把它整理好了。:)检查Jar内容并检查图标是否在您期望的位置。然后检查整个路径的大小写。
图像
图像
之间的差异可能并不意味着文件系统(如Windows)出现问题,但对于访问区分大小写的路径(如此处)来说,这一点很重要。注意到这一点真是太神奇了……在过去的两天里,我一直在为这一点绞尽脑汁。。。最后的问题是“Bravo_Logo.PNG”而不是“Bravo_Logo.PNG”…谢谢你,汤普森…你;欢迎光临。很高兴你把它整理好了。:)