笔者刚开始也觉得自己写的是相对路径,但是因为我的demo2(运行程序所在的包)和图片资源文件夹(images)在同一个文件目录下,而采用我的方法会导致它会在demo2的上一级目录中查找images文件夹,但是当你打包后,你的最顶层文件夹就是demo2,所以导致找不到文件夹
将包(demo2)和图片资源文件夹都放在src目录下,然后采取相对路径进行读取
//获取图片的方法
public static Image readImage(String path)
{
Image image = null;
try
{
//返回当前运行文件的目录
InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(path);
image = ImageIO.read(resourceAsStream);
resourceAsStream.close();
}
catch (IOException e)
{
e.printStackTrace();
}
return image;
}
最后获取图片时,调用方法,即可
public static Image bgimg = readImage("images/sea.jpg");
最后不会打包的同学可以看我另一篇博文
idea打包java项目成jar可执行文件



