设置没有完整路径的 imageIcon

Setting imageIcon without full path

我试图在 Jlabel 上设置图标,但每次 运行 时我都会得到 "NullPointerException"。当我输入完整路径时它确实 运行 但我不想这样做,因为我想在环境中移动 java 程序。

jLabel1.setIcon(new ImageIcon(this.getClass().getResource("/data/images/image.jpg")));

我认为问题出在我尝试使用的路径上。

我的大致项目环境是:

projectfolder/src
projectfolder/data/images/image.jpg

我试过使用:

/image.jpg
/data/images/image.jpg
data/images/image.jpg
.\data\images\image.jpg

我做错了什么?

Class#getResource() returns 相对于您 class 位置的资源。请改用 ClassLoader#getResource()。如果使用默认 class 加载程序,它 returns 相对于程序 class 路径的资源。

this.getClass().getClassLoader().getResource("data/images/image.jpg")

您应该将数据文件夹放在 src 文件夹中。否则数据文件夹不包含在程序的 .jar.