Java: Loading resources from the file system

file-io, java, resources

Solution

What I would do, if possible, is package your images in with your Jar.

That way you don't have to worry about where your Jar is launched from.

You would then need to load images similar to the following:

InputStream stream = this.getClass().getClassLoader().
                                     getResourceAsStream("/images/logo.png");

Problem

My Project Setup I have the following project setup: ``` \program.jar \images\logo.png ``` In my code, I reference the image with the relative URL `"images/logo.png"`. Problem If I run this program with the following command while in the directory: ``` c:\projects\program_dir\bin\>java -jar program.jar ``` Then everything works and Java is able to locate the image. Now, my problem is, that I need to be able to run the program from a different directory. ``` c:\>java -jar c:\projects\program_dir\bin\program.jar ``` The program is executed, but now all the relative URLs no longer work. What I need How do I calculate the execution home of the program.jar file, so that I can change my relative URLs into absolute URLs?

Original source

Related problems