Accessing JAR resources

Pablo Fernandez picture Pablo Fernandez · Apr 14, 2010 · Viewed 11.1k times · Source

I have a jar file with resources (mainly configuration for caches, logging, etc) that I want to distribute.

I'm having a problem with the relative paths for those resources, so I did what I've found in another stackoverflow question, which said that this was a valid way:

ClassInTheSamePackageOfTheResource.class.getResourceAsStream('resource.xml');

Sadly this does not work.

Any ideas? Thanks!

PS: Obviously I cannot use absolute paths, and I'd like to avoid environment variables if possible

Answer

Marcus Adams picture Marcus Adams · Apr 14, 2010

Make sure that your resource folder is listed as a source folder in your project settings. Also, make sure that the resource folder is set to export when you build your jar.

You can add a .zip extension to your jar file then open it up to ensure that your resources are included and at the expected location.

I always use absolute paths like this:

InputStream input = this.getClass().getResourceAsStream("/image.gif");

When you use absolute paths, "/" is the root folder in the jar file, not the root folder of the host machine.