我写了一个函数读取本地的png 图片,在eclipse中工作的好好的,但是一旦打包到jar中,双击运行却怎么也装载不了本地图片,抛出imageio异常,说找不到文件。函数如下 public static BufferedImage getBufferedImage(JFrame jfrm, String fileName)
{
BufferedImage bid = null;
try {
URLClassLoader urlLoader = (URLClassLoader) jfrm.getClass().getClassLoader();
URL url = urlLoader.findResource(fileName);
File imageFile = new File(url.toString().substring(8)); // 原始图片文件 bid = ImageIO.read(imageFile);
} catch (Exception e) {
e.printStackTrace();
}
return bid;
}在JFrame中的调用代码:
BufferedImage biHill = Tools.getBufferedImage(this,"res/images/house.png");不知道为什么在打包之后就无法装载?有没有别的办法装载图片转换成BufferedImage呢?我要用它来进行缩放的。
{
BufferedImage bid = null;
try {
URLClassLoader urlLoader = (URLClassLoader) jfrm.getClass().getClassLoader();
URL url = urlLoader.findResource(fileName);
File imageFile = new File(url.toString().substring(8)); // 原始图片文件 bid = ImageIO.read(imageFile);
} catch (Exception e) {
e.printStackTrace();
}
return bid;
}在JFrame中的调用代码:
BufferedImage biHill = Tools.getBufferedImage(this,"res/images/house.png");不知道为什么在打包之后就无法装载?有没有别的办法装载图片转换成BufferedImage呢?我要用它来进行缩放的。
两种URL路径不同导致的问题:一种是file:/D:/test/res/images/house.png
一种是jar:file:/D:/pack/test.jar!/res/images/house.png继续求高人指点~
public static BufferedImage getBufferedImage(JFrame jfrm, String fileName)
{
BufferedImage bid = null;
try {
URLClassLoader urlLoader = (URLClassLoader) jfrm.getClass().getClassLoader();
bid = ImageIO.read(urlLoader.getResourceAsStream(fileName));
} catch (Exception e) {
e.printStackTrace();
}
return bid;
}可以在eclipse中,以及打包的jar中都正常工作了~~
public static BufferedImage getBufferedImage(JFrame jfrm, String fileName)
{
BufferedImage bid = null;
try {
URLClassLoader urlLoader = (URLClassLoader) jfrm.getClass().getClassLoader();
bid = ImageIO.read(urlLoader.getResourceAsStream(fileName));
} catch (Exception e) {
e.printStackTrace();
}
return bid;
}可以在eclipse中,以及打包的jar中都正常工作了~~