我正在eclipse中开发一个java项目。为了分发程序,我通过 eclipse 中的导出功能创建了一个可运行的 .jar 文件。
在我的程序中,加载几个存储在名为“tableImages”的文件夹中的图像。我通过 ClassLoader 加载图像(您将在下面找到代码片段)。问题如下:从 .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;
}
}
非常感谢您的帮助!