Using images in JAR archives
I've recently tried to export my current project as a JAR file.
However, whenever I now try to start it, I am getting a
NullpointerException from where the pictures are supposed to be.
Below's some code showing the problem. Iam using Eclipse for the
export. I already tried refreshing and using several versions of
getResource(), getSystemResource() and so on using relatie or absolute
paths. I even tried a version using an InputStream, the result is
always the same:
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:138>
at ShowImages.loadImage(ShowImages.java:25)
at ShowImages.<init>(ShowImages.java:14)
at ShowImages.main(ShowImages.java:31)
In Eclipse, the project works just fine. The pictures are placed in a
folder "images" in the JAR archive, as it should be. The manifest
reads:
Manifest-Version: 1.0
Main-Class: ShowImages
Do you have an idea on how to get this to work? If so, could you give
me an explanation on how you did it, using which options/commands?
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
@SuppressWarnings("serial")
public class ShowImages extends JFrame {
ShowImages(){
this.setSize(500, 500);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ImageIcon image1 = this.loadImage("images/image1.gif");
JLabel label = new JLabel(image1);
getContentPane().add(label);
setVisible(true);
}
private ImageIcon loadImage(String path){
java.net.URL url = ShowImages.class.getResource(path);
ImageIcon titelbild = new ImageIcon(url);
return titelbild;
}
public static void main(String[] args){
ShowImages frame = new ShowImages();
}
}