Skip to main content

using Class.getResource() load resource file in Eclipse

There are many ways to load resource file in java app. What sun recommended is using Class.getResource("resource_name") or Class.getResourceAsStream("resource_name") then you will get URL and InputStream respectively. If resource_name is specified without "/", it will be prepend with Class package. So resource file must be in same place[folder structure] as the Class. What I love to do is call getResource() with "/" and put resource file at the root of package. This way i can have separate resource folder. below is in Eclipse,

1. From Package explorer right click src folder->click import
2. In import dialog, Choose General->File System ->next
3. from directory:->Browse to your resource folder.
4. to folder:-> I add "resource" as a folder name under src folder. then click "Finish".

In the code, load resource with
this.getClass().getResource("/resource/buttons1.png")
or
this.getClass().getResourceAsStream("/resource/TX_Jello2.ttf")

Comments

Anonymous said…
Thanks. I was wondering how to best use getClass().getResource with Eclipse, your post really helped me.
nantuko84 said…
thanks a lot! very usefull post
you've saved my time ;)
Anonymous said…
I was going crazy with this path-to-resource problem. Thanks for the post!
Anonymous said…
I spent 2 and a half days debugging and testing, until I read your post, now the code is working properly. Thank you very much!
Anonymous said…
Thanks a lot, that was really useful. This post should be the first when searching for "eclipse getResource" on Google!
Thank You Thank You Thank You!! This has been urking me for the last couple of days. Thank you!
Anonymous said…
Many thanks! Short and sweet
Paul said…
Thank you. This helped me resolve a problem I was having on a project at work.
Anonymous said…
Thank you very much for this information! You really saved me a lot of time.
Djamel said…
Hi man thanks lotof your post saved 3 days of work ;)
Unknown said…
Great post, thank you.
Sebastian said…
Lovely post, works like a charm.
Could you maybe explain the difference to the ClassLoader.getSystemResource(..) function? I could not find comprehensive help on this topic and it looks like resource loading is a very often encountered problem.
olushola said…
thanks, good post
Feross said…
Thank you very much! This helped me out!
Emerald214 said…
It works but when compiling, the images are copied to bin folder.
andcoder said…
worked fine.. thanks
Anonymous said…
I have noticed the following problem with getRessourceAsStream(): for every call, the jar il loaded again. This can be very annoying, especially when the jar il loaded over a slow connection.
rafael said…
Thx a lot dude, that's exactly what I was looking for.
Unknown said…
When I bought my computer and I didn´t know how to use java graphics, so I decided looking for information in a webside and I found an useful information that helped me a lot.. Now I am interested in to do the best investment and I found a webside very useful and interesting called costa rica investment opportunities , I think it´s a very wonderful site.
Anonymous said…
Thanks, do you know how to write to an external file when the jar is run?
Anonymous said…
Surely the title should be using Class.getResource() load resource file in Java.... you're code isn't anything to do with the IDE
Raja SP said…
ahh! Thats an extremely usefull nugget.
Anonymous said…
thanks, but what this has to do with Eclipse? This is Java coding anyway!
Joscha said…
Great, thanks!
Anonymous said…
thanks!!
YetAnotherG33k said…
Thanx a lot....was going crazy on this topic!!
Anonymous said…
Thank you, this helped me a lot!
Anonymous said…
Hello,

Could you please explain me how to copy a resource to a directory in the computer?

thank you!
Anonymous said…
Thanks a lot dude,seriously ur post helped a lot.
Anonymous said…
How come 2000 people just repeat what the javadoc already says, while you add the USEABLE bit of information? thanks a lot! your post should be WAY higher in Google rankings.
Anonymous said…
Please tell me pros and cons to put /resource directory in /src or in / where are /libs and /src directories?
rakendu said…
I used this but I am geting a nullpointerexception. Could you please help. I am using JSF
rakendu said…
I used this but I am geting a nullpointerexception. Could you please help. I am using JSF
rakendu said…
I used this but I am geting a nullpointerexception. Could you please help. I am using JSF
Hikari said…
Very nice tip.

Instead of using "/resource/filename" I'd put files in my main pachage folder, and just use a class in there to call getResource().

This way we avoid conflicts with other libs!
thanks it's solve my Windows and Linux class path related issues.

Popular posts from this blog

Fixing sendmail take a long time to start

I notice that my database box[FC6+Oracle10.2] take along time to startup. Sendmail and sm-client very very slow to start[ about 5 minutes ]. There's something wrong in /etc/hosts file. 'newalises' command take long time to update and finish with error below. [root@ora10g ~]# newaliases WARNING: local host name (ora10g) is not qualified; see cf/README: WHO AM I? /etc/aliases: 76 aliases, longest 10 bytes, 765 bytes total [root@ora10g ~]# cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.1.55 ora10g [root@ora10g ~]# To fix this, custom hostname[ora10g] need to append to localhost line in /etc/hosts. [root@ora10g ~]# cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost ora10g 192.168.1.55 ora10g [root@ora10g ~]# newaliases /etc/alia...

Too many open files

Last week tomcat log file report many error about "Too many open files" when it has high traffic. Some in catalina_log say 2007-04-07 16:13:40 HttpProcessor[80][272] Starting background thread 2007-04-07 16:13:40 HttpConnector[80] accept: java.net.SocketException: Too many open files and here is from localhost_log 2007-04-07 16:13:40 StandardWrapperValve[myservlet]: Servlet.service() for servlet myservlet threw exception java.io.FileNotFoundException: /home/log/mylog_070407.log (Too many open files) This is because too many file descriptors're opened by tomcat. File descriptor can be limited in both system level and shell level. To check maximum number of fd in system type 'cat /proc/sys/fs/file-max'. In my case it is 65536(someone said it should set to 200000). Tomcat error when try to open socket number 272 so I think 65536 is ok for me for now. Anyway if u want to set it add 'fs.file-max = 200000' to /etc/sysctl.conf pnix@pnix-a7:~$ cat /proc/sys/fs/fil...

Setup MySQL with Ofbiz

Download ofbiz weekily build and extract it somewhere you want. From your ofbiz directory, edit file entityengine.xml in framework/entity/config add new datasources below localmysql datasource part <datasource name="custommysql" helper-class="org.ofbiz.entity.datasource.GenericHelperDAO" field-type-name="mysql" check-on-start="true" add-missing-on-start="true" check-pks-on-start="false" use-foreign-keys="true" join-style="ansi-no-parenthesis" alias-view-columns="false" drop-fk-use-foreign-key-keyword="true" table-type="InnoDB" character-set="latin1" collate="latin1_general_cs"> <read-data reader-name="seed"/> <read-data reader-name="seed-initial"/> ...