随便写个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!

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

  1. c#_将文件导入到工程目录下

    Demo介绍 我先说明我这段Demo写出来的初衷是用于我们项目的一个要求: 甲方要求:客户只需要把文件丢进一个文件夹然后,再扫描该文件夹下所有后缀为.dxf的文件用于后续操作: 乙方操作:我的解决方案 ...

  2. java读取resouces目录下文件

    resources中存放一些个资源文件,比如properties文件等,编译好会自动将这里边的文件复制到target/classes里去.获取资源文件的方法说明: XXX.class.getResou ...

  3. 在 java 的 bin 目录下,jdk 提供了很多使用的工具,下面学习一些监控和故障处理的工具。...

    2019独角兽企业重金招聘Python工程师标准>>> 在 java 的 bin 目录下,jdk 提供了很多使用的工具,下面学习一些监控和故障处理的工具. 名称 作用 jps JVM ...

  4. 清除工程目录下多余文件和文件夹

    清除工程目录下多余文件和文件夹 可以清除一个工程目录下所有工程的多余的临时文件以及Debug,Release文件夹和Debug,Release文件夹下所有的内容.实现比较简单: #include &q ...

  5. Java实现指定目录下的文件查找

    Java实现指定目录下的文件查找 入门Java实现文件的查找功能较为简单,主要有以下两种: 1.给出文件名,查找目录及其子目录中是否存在 2.给出后缀名,查找目录及其子目录中相关的文件 题型一: 题目 ...

  6. JAVA中同目录下定义类,以及对象的创建与使用,内存图的原理

    JAVA中同目录下定义类,以及对象的创建与使用(听课笔记) JAVA中对象的创建与使用(听课笔记) 示例一 同文件目录下,创建了三个类OOTest01,User,Address类,之间的调用 示例二 ...

  7. VS工程目录下各文件的含义以及如何打开源文件进行编译

    一.创建工程产生的各个文件都你知道是什么用的吗? 解决方案与工程 在这之前先了解一个概念:解决方案与工程. **解决方案(Solution):**一个大型项目的整体的工作环境: **工程 (Proje ...

  8. 用java SDK/bin目录下的native2ascii.exe把.properties文件中的中文转换成unicode字符,实现国际化...

    需要用到java SDK\\bin 目录下的native2ascii.exe程序,把你写的文本文件转成unicode字符即可,例: native2ascii 源文件名.txt 新文件名.txt 测试 ...

  9. Visual Studio 2010工程目录下的ipch文件夹和.sdf文件

    使用VS2010建立C++解决方案时,会生成SolutionName.sdf和一个叫做ipch的文件夹,这两个文件再加上*.pch等文件使得工程变得非常的庞大,一个简单的程序都会占用几十M的硬盘容量, ...

最新文章

  1. Python 写了一个网页版的「P图软件」,惊呆了!
  2. 【Java VisualVM】使用 VisualVM 进行性能分析及调优
  3. 浅谈Android软件安全自动化审计
  4. c语言1 2 3 10000,在网上看到一个求2的10000次方的方法,有个地方看不懂,求大佬...
  5. 9:38 2009-7-29
  6. Ubuntu下安装rknn-toolkit以及转换darknet-yolov3模型
  7. linux NTP服务
  8. 流行于机器学习竞赛的Boosting,一文讲透足够了
  9. java解压zip文件程序_java 解压zip文件
  10. 为什么败者树的访问外存次数要比胜者树少_为什么说蒙地卡罗搜索树MCTS是AlphaZero的核心?[AlphaZero理论篇之三]...
  11. 建立apk定时自动打包系统第一篇——Ant多渠道打包并指定打包目录和打包日期...
  12. Delphi 2007 先睹为快
  13. java实现递归算法
  14. 简析通达信股票接口测试过程
  15. 一维和二维傅里叶变换的图片直观理解
  16. PayPal提现到美国账户收35美元怎么办?最新3种解决办法!
  17. Tecplot自定义变量
  18. C语言基本数据类型占内存的大小
  19. 面试时如何更好的介绍自己的项目
  20. 利用Visual Studio(C++)实现简易计算器(二)

热门文章

  1. 02_反汇编_反编译
  2. webpack之font-awesome
  3. 后台服务器端技术点(前沿了解)
  4. Qt 字符串QString arg()用法总结
  5. js触发asp.net的Button的Onclick事件
  6. could not find driver和PDO drivers = no value
  7. 弹出选择文件夹的对话框 BROWSEINFO 的用法【MFC】
  8. 关于Centos7启动,ens33无IP问题解决
  9. Linux版本配置环境变量,如何linux环境下配置环境变量过程图解
  10. springboot怎么杀进程_全新Steam在线游戏 Among us太空狼人杀攻略