defining root classpath for class.getResource()

user1028741 picture user1028741 · Sep 30, 2013 · Viewed 17.2k times · Source

I'm using java in Eclipse (windows), and I'm trying to use:

myClass.getResource("/image.jpg"), 

While image.jpg exists in the root loacation "myProject/". It returns null.

I checked many other threads but none of them resolved my issue.

So I tried to evaluate this:

this.getClass().getResource("/").getPath();

and it returned "myProject/build/classes".

So I checked the project's configuration for this dir, and found the exact same dir under

Java Build Path --> Source --> Default output folder

My questions are:

  1. why is the default dir of my resources is the output folder?

  2. As mentioned, I want to get a resource from another folder, but attempts to call "/../" aren't working... How can I then load other resources which are not nested in my classes dir? (I can change my output dir, but I think it will be very ugly...)

Answer

angel_navarro picture angel_navarro · Oct 1, 2013

You must put them in the root of "src/" folder ;-)

SRC/ folder is compiled to BUILD/CLASSES/, so all you put in src/* goes to classes/*