【Java】Maven工程目录下ImageIcon读图片失败爆空指针的解决方案
随便写个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读图片失败爆空指针的解决方案相关推荐
- c#_将文件导入到工程目录下
Demo介绍 我先说明我这段Demo写出来的初衷是用于我们项目的一个要求: 甲方要求:客户只需要把文件丢进一个文件夹然后,再扫描该文件夹下所有后缀为.dxf的文件用于后续操作: 乙方操作:我的解决方案 ...
- java读取resouces目录下文件
resources中存放一些个资源文件,比如properties文件等,编译好会自动将这里边的文件复制到target/classes里去.获取资源文件的方法说明: XXX.class.getResou ...
- 在 java 的 bin 目录下,jdk 提供了很多使用的工具,下面学习一些监控和故障处理的工具。...
2019独角兽企业重金招聘Python工程师标准>>> 在 java 的 bin 目录下,jdk 提供了很多使用的工具,下面学习一些监控和故障处理的工具. 名称 作用 jps JVM ...
- 清除工程目录下多余文件和文件夹
清除工程目录下多余文件和文件夹 可以清除一个工程目录下所有工程的多余的临时文件以及Debug,Release文件夹和Debug,Release文件夹下所有的内容.实现比较简单: #include &q ...
- Java实现指定目录下的文件查找
Java实现指定目录下的文件查找 入门Java实现文件的查找功能较为简单,主要有以下两种: 1.给出文件名,查找目录及其子目录中是否存在 2.给出后缀名,查找目录及其子目录中相关的文件 题型一: 题目 ...
- JAVA中同目录下定义类,以及对象的创建与使用,内存图的原理
JAVA中同目录下定义类,以及对象的创建与使用(听课笔记) JAVA中对象的创建与使用(听课笔记) 示例一 同文件目录下,创建了三个类OOTest01,User,Address类,之间的调用 示例二 ...
- VS工程目录下各文件的含义以及如何打开源文件进行编译
一.创建工程产生的各个文件都你知道是什么用的吗? 解决方案与工程 在这之前先了解一个概念:解决方案与工程. **解决方案(Solution):**一个大型项目的整体的工作环境: **工程 (Proje ...
- 用java SDK/bin目录下的native2ascii.exe把.properties文件中的中文转换成unicode字符,实现国际化...
需要用到java SDK\\bin 目录下的native2ascii.exe程序,把你写的文本文件转成unicode字符即可,例: native2ascii 源文件名.txt 新文件名.txt 测试 ...
- Visual Studio 2010工程目录下的ipch文件夹和.sdf文件
使用VS2010建立C++解决方案时,会生成SolutionName.sdf和一个叫做ipch的文件夹,这两个文件再加上*.pch等文件使得工程变得非常的庞大,一个简单的程序都会占用几十M的硬盘容量, ...
最新文章
- Python 写了一个网页版的「P图软件」,惊呆了!
- 【Java VisualVM】使用 VisualVM 进行性能分析及调优
- 浅谈Android软件安全自动化审计
- c语言1 2 3 10000,在网上看到一个求2的10000次方的方法,有个地方看不懂,求大佬...
- 9:38 2009-7-29
- Ubuntu下安装rknn-toolkit以及转换darknet-yolov3模型
- linux NTP服务
- 流行于机器学习竞赛的Boosting,一文讲透足够了
- java解压zip文件程序_java 解压zip文件
- 为什么败者树的访问外存次数要比胜者树少_为什么说蒙地卡罗搜索树MCTS是AlphaZero的核心?[AlphaZero理论篇之三]...
- 建立apk定时自动打包系统第一篇——Ant多渠道打包并指定打包目录和打包日期...
- Delphi 2007 先睹为快
- java实现递归算法
- 简析通达信股票接口测试过程
- 一维和二维傅里叶变换的图片直观理解
- PayPal提现到美国账户收35美元怎么办?最新3种解决办法!
- Tecplot自定义变量
- C语言基本数据类型占内存的大小
- 面试时如何更好的介绍自己的项目
- 利用Visual Studio(C++)实现简易计算器(二)
热门文章
- 02_反汇编_反编译
- webpack之font-awesome
- 后台服务器端技术点(前沿了解)
- Qt 字符串QString arg()用法总结
- js触发asp.net的Button的Onclick事件
- could not find driver和PDO drivers = no value
- 弹出选择文件夹的对话框 BROWSEINFO 的用法【MFC】
- 关于Centos7启动,ens33无IP问题解决
- Linux版本配置环境变量,如何linux环境下配置环境变量过程图解
- springboot怎么杀进程_全新Steam在线游戏 Among us太空狼人杀攻略