Accessing a resource within a .jar
Posted by Emanuele Gesuato Mon, 06 Feb 2006 01:08:00 GMT
Sometimes it is useful to distribute an application in a jar file through Java Web Start or any other way. So, you could have to read some resource (images or properties file) from inside a jar. How can you do it ? It’s very simple, here’s an example to retrieve an image:
ImageIcon image = (new ImageIcon(getClass().getResource("yourpackage/mypackage/image.gif")));
In general, you can retrieve an InputStream in the following way:
InputStream is = this.getClass().getClassLoader()
.getResourceAsStream("yourpackage/mypackage/myfile.xml");
It will run inside or outside the jar. Enjoy !



...or briefly:
I think , it’s not complete demonstrative. Where is the code, and the ”.jar” into code or in your explanation??
The ”.jar” into code or in your explanation must be in your classpath. So no name of the ”.jar” is required inside the code. You can include your jar in your classpath using:
boh , I can’t understand , however It’s not so important!
Mah , maybe simply ,with that code you can read a file into jar file.
but ….
What’s means distribuite an application ?? Where is RMI ?? What’s Java Web Start ??
No, with that code you can read a “file” from everywhere, without worrying about the real path or the storage of the “file” (resource), that can even be in a jar or elsewhere in the net, or in a database. It delegates the loading to the classloader, so using the same machanism used for loading the classes in the JVM.
“my jug”, about the other questions…are them on topic? I think you are just trolling. If you are really interested, we have also a mailing-list…but…no stupid questions, please.
Sorry fante,
I’m not a trolling , simply I don’t understand your sentence “Sometimes it is useful to distribute an application in a jar file through Java Web Start or any other way” and the explanation with your code.
.. but it’s not important , it’s only curiosity …
Yes, of sure, the next time I don’t back in jugpadova.it
“my jug”, it’s not my sentence: Emanuele wrote the original post.
What is not clear or unusual in distributing a Java application in a Jar or through the Java Web Start?
Some links:
http://java.sun.com/products/javawebstart/
http://mindprod.com/jgloss/javawebstart.html
Hi there. This all sounds super cool, but I can’t get it work.
I got a JAR file with a default class with a main method to be called.
so the inside of the JAR looks like so :
com/me/stuff/Bling.class images/image.gif META-INF/MANIFEST.MF
All works except for the image bit !
in my Bling class I got :
java.net.URL imgURL = getClass().getResource(“images/image.gif”); image = Toolkit.getDefaultToolkit().getImage(imgURL);
the exception I get when I run my dudle.jar file ( java -jar dudle.jar ) is :
Uncaught error fetching image: java.lang.NullPointerException at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:97) at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:107) at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:240) at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172) at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)
any thoughs ? Thx Rp
I tried the following code, and it works:
Check that imgURL is not null. I think it could be a classloading problem. Try also with the “long” form:
getClass().getClassLoader().getResource(...
Thanks for the help. Had been looking for this.
for key store
http://www.delphifaq.com/faq/f5003.shtml
simple and works
Thanks for providing such useful information. I really appreciate your professional approach.
Hi Emanuele…!!!!!!
I think the given idea by you is very interesting… This all sounds super cool because this is the thing for which I was been looking… Thanks for me such an useful information.. great stuff..!!! Keep the good work.. Hope to see your more and more post so on.
To perform basic tasks with JAR files, we can use the Java Archive Tool Because the Java Archive tool is invoked by using the jar command, for convenience we’ll call it the “Jar tool”.
Sometimes it is useful to distribute an application in a jar file through Java Web Start or any other way