【发布时间】:2012-05-21 00:10:20
【问题描述】:
我正在 Eclipse 中开发一个 java 项目。为了分发程序,我通过 eclipse 中的导出功能创建了一个可运行的 .jar 文件。
在我的程序中,加载了几个存储在名为“tableImages”的文件夹中的图像。我通过 ClassLoader 加载图像(您将在下面找到代码 sn-ps)。问题如下:从 .jar 文件执行程序时,在上述文件夹中加载其中一个 .png 文件时会引发 NullPointerException。现在有趣的是,完全相同的文件夹中的某些 .png 文件已正确加载,这意味着它们不会导致 NullPointerException。
我使用 jar tf 命令检查了 .jar 的内容。显然无法加载的图像被打包到罐子里。那么是什么导致了这个 NullPointerException,我该如何解决呢?
这是我用来将图像绘制到摆动框架的类。
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import java.net.*;
public class LoadBackgroundImage extends Component {
private static final long serialVersionUID = 1L;
BufferedImage img;
public void paint(Graphics g){
g.drawImage(img, 0, 0, null);
}
public LoadBackgroundImage(String image){
URL url = ClassLoader.getSystemResource(image);
try{
img = ImageIO.read(url);
this.setSize(img.getWidth(), img.getHeight());
}catch(IOException e){
System.err.println(e.getMessage());
}
}
public Dimension getPreferredSize(){
if(img == null){
return new Dimension(100, 100);
}else{
return new Dimension(img.getWidth(null), img.getHeight(null));
}
}
public BufferedImage getImage(){
return img;
}
}
非常感谢您的帮助!
【问题讨论】:
-
您能否在抛出的异常中进行编辑,它是 stracktrace/log 消息?这对查找错误非常有帮助:)
-
检查这个HOW TO ADD IMAGES TO YOUR PROJECT IN ECLIPSE或者你可以按照提到的步骤here
-
谢谢,这个链接也很有帮助!