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 !

Posted in  | Tags ,  | 62 comments | no trackbacks

Comments

  1. Avatar Lucio Benfante said about 13 hours later:

    ...or briefly:

    InputStream is = 
        this.getClass()
        .getResourceAsStream(
            "yourpackage/mypackage/myfile.xml");
  2. Avatar my jug said about 17 hours later:

    I think , it’s not complete demonstrative. Where is the code, and the ”.jar” into code or in your explanation??

  3. Avatar Dario Santamaria said about 22 hours later:

    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:

    java -cp .:<myjarfile>.jar myapplication
  4. Avatar my jug said 6 days later:

    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 ??

  5. Avatar Lucio Benfante said 8 days later:

    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.

  6. Avatar my jug said 9 days later:

    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

  7. Avatar Lucio Benfante said 10 days later:

    “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

  8. Avatar Rui Pereira said 612 days later:

    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

  9. Avatar Lucio Benfante said 617 days later:

    I tried the following code, and it works:

    package provaimage;
    
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.net.URL;
    
    public class Main {
    
        public static void main(String[] args) {
            URL imgURL = Main.class.getResource("images/image.gif");
            Image image = Toolkit.getDefaultToolkit().getImage(imgURL);
            System.out.println(image);
        }
    }

    Check that imgURL is not null. I think it could be a classloading problem. Try also with the “long” form:

    getClass().getClassLoader().getResource(...

  10. Avatar pant.uday@gmail.com said 880 days later:

    Thanks for the help. Had been looking for this.

  11. Avatar yosef said 1257 days later:

    for key store

    http://www.delphifaq.com/faq/f5003.shtml

    simple and works

  12. Avatar Web Design London said 1506 days later:

    Thanks for providing such useful information. I really appreciate your professional approach.

  13. Avatar Web Design London said 1536 days later:

    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.

  14. Avatar web designing india said 1561 days later:

    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”.

  15. Avatar mirli said 1737 days later:

    bravissimo, worked as advertized!

  16. Avatar Verner said 1789 days later:

    Look here!

    ImageIcon icon = new ImageIcon(ClassLoader.getSystemResource(“/.png”));

    URl url = ClassLoader.getSystemResource(String sourceTarget);

    MyWebSite www.vanillaworld.ru

  17. Avatar H Miracle Review said 1913 days later:

    Many thanks on your excellent website. I was pondering no matter if I can achieve some adverts from you? In case you consent to my suggestions, make sure you you should not hesitate to communicate with me by way of email. I’m glad that for those who also have your own personal best good quality suitable blogs.

  18. Avatar ways to get your ex back said 1934 days later:

    Great literature is simply language charged with meaning to the utmost possible degree

  19. Avatar marketing mix said 1947 days later:

    Thanks for providing such useful information. I really appreciate your professional approach

  20. Avatar Sabbir said 1948 days later:

    thanx for the blog. saved my time :)

  21. Avatar RD Web Design said 1959 days later:

    Nice one, cheers for this, been searching for a solution, ta.

  22. Avatar http://www.godwinhotels.in said 1969 days later:

    Very interesting blog.

  23. Avatar blackberry Spy said 1990 days later:

    Jar file good I never Knew That Thanks for sharing

  24. Avatar Christian Louboutin Outlet said 2002 days later:

    Would it be good to get on your guard associated with an total job caused by a number of undesirable oranges? You’ll find at the least a pair of critical variances, it seems like in my opinion. 1st, no person concerns that will scientific disciplines actually works, no matter what wrongly diagnosed along with fake assert may possibly every now and then always be presented. Nevertheless no matter whether you’ll find just about any “miraculous” solutions via faith-healing, outside of the human body’s individual capacity to treat themselves, is incredibly very much in matter. Second, your expose’ involving scam along with miscalculation throughout scientific disciplines is done virtually entirely by simply scientific disciplines. Though the direct exposure involving scam along with miscalculation throughout faith-healing is actually certainly not accomplished by simply various other faith-healers.

  25. Avatar Tax Return said 2014 days later:

    This is a wonderful approach on this topic.

  26. Avatar Play Sand said 2023 days later:

    It’s a real pleasure to read everything you write.

  27. Avatar John said 2042 days later:

    amazing phone SEO India

  28. Avatar Find a tradesman on iPhone said 2058 days later:

    An excellent written article. You should write more on this.

  29. Avatar Bulk DVD Replication ideareplication.com said 2059 days later:

    I was looking for some topics that are enough popular and finally founded your blog, it has superb topics with great popularity.

  30. Avatar Mohan lal said 2157 days later:

    thanxs for sharing such a nice infornmation .

  31. Avatar SEO India said 2157 days later:

    I must appreciate you for the information you have shared.I find this information very useful and it has considerably saved my time.

  32. Avatar seo company said 2178 days later:

    nice information useful for everyone.

  33. Avatar seo company said 2178 days later:

    I like this link.

  34. Avatar seo company said 2178 days later:

    This site very useful.

  35. Avatar Dentists in Mumbai said 2193 days later:

    I like this post and found very useful for reference. I bookmark this website and refer it to my colleague and friends.

  36. Avatar snyxius said 2199 days later:

    great accessing ya…...

    Web Design Company.
  37. Avatar Blepharoplasty said 2205 days later:

    I like that you have so many fans. I guess you won’t share your secret!

  38. Avatar Plastic Surgery said 2207 days later:

    I really think your blog is among the best in your niche.

  39. Avatar Liposuction said 2207 days later:

    I find your article excellent.

  40. Avatar Nose Job said 2208 days later:

    I am very glad I’ve discovered your blog.

  41. Avatar SEO Company India said 2242 days later:

    I appreciate you!!!!!!!!! Thanks for discussion!!!!!!!!

  42. Avatar <b><a href="http://www.searchquotes.com/quotes/about/Life/">quotes about life</a></b> said 2252 days later:

    quotes about life

  43. Avatar quotes about life said 2252 days later:

    quotes about life

  44. Avatar online shopping said 2262 days later:

    I actually wanted to post a simple comment to be able to express gratitude to you for all of the unique strategies you are showing at this website. My rather long internet look up has now been recognized with wonderful facts and techniques to write about with my relatives. I ‘d believe that most of us readers actually are rather fortunate to be in a decent site with very many brilliant people with useful strategies. I feel extremely fortunate to have seen your site and look forward to plenty of more awesome moments reading here. Thanks once again for everything.

  45. Avatar Agnes said 2439 days later:

    Everyday is an interesting new life adventure. Impressive indeed. thanks

  46. Avatar Rachael said 2439 days later:

    Very interesting discussion glad that I came across such informative post. Keep up the good work friend. Glad to be part of your net community.

  47. Avatar Paige said 2439 days later:

    A truly a great one you’ve shared in here. thanks for sharing. Impressive indeed.

  48. Avatar flower said 2439 days later:

    I found it fascinating content and information. I like to read this material. Your point of view set people thinking

  49. Avatar flower said 2439 days later:

    That’s not me usually motivated by educational posts about Ny sida, on the other hand short article genuinely made me ponder your points of views. You might have provided important and reliable ideas which are realistic and attention-grabbing. I expertly love to write about email list of cpas. Therefore I am aware of the effort it will need to produce an interesting article this way. Thank you for disclosing your professional work.

  50. Avatar Rachael said 2439 days later:

    That’s not me usually motivated by educational posts about Ny sida, on the other hand short article genuinely made me ponder your points of views. You might have provided important and reliable ideas which are realistic and attention-grabbing. I expertly love to write about email list of cpas. Therefore I am aware of the effort it will need to produce an interesting article this way. Thank you for disclosing your professional work.

  51. Avatar Rachael said 2439 days later:

    I saw this really great post today and I wanted to link to it. Thanks again for taking the time to post.

  52. Avatar flower said 2441 days later:

    this is the best website ever!!!

  53. Avatar Francisco said 2454 days later:

    Thanks you very much!! this Save my time !!

  54. Avatar flower said 2458 days later:

    I agree with you. This post is truly inspiring. I like your post and everything you share with us is current and very informative, I want to bookmark the page so I can return here from you that you have done a fantastic job

  55. Avatar Denis said 2488 days later:

    Thanks for this.

  56. Avatar Reverse Number Calllocato said 2500 days later:

    I don’t think that it will work. A coding will not give a proper meaning and will not give the definition that you want. Plus many codes means more confusing hierarchy and time constraint.

  57. Avatar krishnac005@gmail.com said 2502 days later:

    I want to access a class of jar file not having main method in it from the command prompt. I had spent lots of time to google it but unfortunately I didn’t get anything. any help greatly appriciated

    —Thanks Krishna

  58. Avatar alberts john said 2506 days later:

    i have read firSt time ur blog, ur blog is great man,,,,,......

  59. Avatar Online Education said 2573 days later:

    Thanxs for sharing such a nice infornmation .

  60. Avatar Best SEO Company UK said 2616 days later:

    What a great post – I have been using Thesis for about a year now and am just scratching the surface of what I can do with it. I can’t wait to go try these suggestions on my own sites. Thanks so much for sharing!

  61. Avatar Lesen Sie hier mehr said 2622 days later:

    This was such a well structured tutorial, very good insight into the application for getting these amazing results.

  62. Avatar Best Online Shopping In india said 2677 days later:

    I really gives my special thanks to Emanuele Gesuato.Your ideas really worked for me . The way retrieve an InputStream is awsum. Pretty Informative.

Trackbacks

Use the following link to trackback from your own site:
http://www.jugpadova.it/articles/trackback/49

(leave url/email »)

   Comment Markup Help Preview comment