您当前的位置: 首页 >  Java

星拱北辰

暂无认证

  • 0浏览

    0关注

    1205博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Java】Maven工程目录下ImageIcon读图片失败爆空指针的解决方案

星拱北辰 发布时间:2020-07-23 18:40:00 ,浏览量:0

随便写个Swing小程序,遇到了一个尴尬的问题,如题……这里分享一下解决问题的过程和结论,希望对读者有所帮助。

使用window-builder选择icon,生成这样的路径,运行可显示: 在这里插入图片描述

但是这种路径只是普通Java项目的路径,但是当我们遇到这样的Maven项目时: 在这里插入图片描述 使用类似于上述的路径会疯狂报错: 在这里插入图片描述

信息如下:

java.lang.NullPointerException  at javax.swing.ImageIcon.(ImageIcon.java:217)  at com.train.view.Table.(Table.java:54)  at com.train.view.Table$1.run(Table.java:19)  at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)  at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)  at java.awt.EventQueue.access$500(EventQueue.java:97)  at java.awt.EventQueue$3.run(EventQueue.java:709)  at java.awt.EventQueue$3.run(EventQueue.java:703)  at java.security.AccessController.doPrivileged(Native Method)  at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)  at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)  at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)  at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)  at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)  at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

我查了做了很多尝试,也思考了很久如何处理这个路径的问题。诸如src这种,都不能读取icon。

我怀疑是Eclipse和IDEA存在差异,决定在Eclipse里模拟这种包结构: 在这里插入图片描述

同样把路径配置交给window-builder: 在这里插入图片描述

将这种写法沿用到IDEA中,还是报错空指针。

最终,我想到这里使用了Table.class,我决定去Maven工程目录下找到这个文件: 在这里插入图片描述

我恍然大悟:问题不在IDE,这种Maven工程结构与传统的JavaSE工程结构不同。这里找路径要基于.class所在的target,我们放置在resources下的images文件都被放到和com“平级”的目录下,所以需要把路径改成这样: 在这里插入图片描述

此时直接使用Crtl+左键单击即可访问图片,运行也能看到我们想看到的了: 在这里插入图片描述

问题如此解决,再次提醒大家,找ImageIcon的图片路径要看.class!

关注
打赏
1660750074
查看更多评论
立即登录/注册

微信扫码登录

0.0418s