I made a java application and bundled all classes in a jar file. When I run the project from eclipse, my application is running successfully. But when I try to run my .jar
file, I am not getting the icons used by my application. In the code I get my icons from images directory present in project folder. How can I present these image files to the end user when using a jar?
I am loading the image like so:
final public ImageIcon iReport=new ImageIcon("images/Report.png");
I have also tried
final public ImageIcon iquit=new ImageIcon(getClass().getResource("images/quit.png"));
and
final public ImageIcon iquit=new ImageIcon(getClass().getResource("/images/quit.png"));
But this results in an error:
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
You need to get it from the classpath instead of from the local disk file system.
Assuming that images
is actually a package and that this package is inside the same JAR as the current class, then do so:
final public ImageIcon iReport =
new ImageIcon(getClass().getResource("/images/Report.png"));
The files in jar files are treated as "Resources". you need to access them as a classpath resource, regular File access methods does not work there.
Try this:
final public ImageIcon iReport = (new ImageIcon(getClass().getResource("images/Report.png")));
I know this was asked long ago, but it might help others with the same problem, like me. I was already using getClass().getResource("..."), but the resource didn't get exported with .jar file.
I solved the problem by refreshing the 'Resources' folder, and its every subfolder.
100% works
final public ImageIcon iReport = new ImageIcon(getClass().getResource("/Report.png"));
Don't forget about "/" at path
for image.