问题描述
项目目录、代码、输出如图所示:
在使用MainFrame.class.getResource("")
获取URL对象时,可以获得。
MainFrame.class.getResource("icon.png")
,获得的值为null
探究
根据MainFrame.class.getResource("")
的输出,找到对应目录,如图:
target目录下没有icon.png,说明在项目构建时,icon.png没有被打包到里面,这是maven的问题,maven默认情况下,并不会将png、xml等文件打包到target中。
问题解决
这个问题解决起来也很容易,只需要在pom文件中加入以下打包规则:
<build>
<resources>
<!-- 将图片一起打包,maven打包时会默认忽略,
如果不写include的节点,会将src/main/java下所有内容打包,包括.java文件 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.png</include>
</includes>
</resource>
</resources>
</build>