2

i am trying to export a pacman game i made from eclipse to a .jar package. The problem is that while everything runs fine on eclipse, when the .jar is exported, the resources i use dont load properly. I have them in a separate /res folder, which is on the build path. I access them in the following ways:

ClassLoader classLoader = getClass().getClassLoader(); try{ image = ImageIO.read(new File(classLoader.getResource("images/PM0.gif").getFile())); } catch (IOException e1) { e1.printStackTrace(); } 

File file = new File(classLoader.getResource("levels/"+fileName).getFile());

What am i doing wrong?here is an example of the errors i get(only in the exported .jar on eclipse it runs fine)

2
  • 1
    Possible duplicate of How to access resources in JAR file? Commented Mar 10, 2017 at 22:54
  • Objects in a jar are not files and you can't use File to access them. Commented Mar 11, 2017 at 8:10

2 Answers 2

5

When working with resources, you should always have them as streams and not as files (unless you're trying to do something really weird).

try the following:

ImageIO.read(classLoader.getResourceAsStream("images/PM0.gif")) 
Sign up to request clarification or add additional context in comments.

2 Comments

I tried it seems to work, but a scanner i am using is giving me problems Scanner s = new Scanner(this.getClass().getClassLoader().getResourceAsStream("levels/"+fileName)); This doesnt seem to work properly when packaged.
@user19955 If you're trying to read the file than you should not be using Scanner, try that solution instead: stackoverflow.com/questions/29611661/…
3

In order to retrieve resources from placed inside a jar, you need to use getResourceAsStream().

It works on eclipse because the runtime environment is executed using the "unpacked" JAR ( or better put - prepacked ) using actual files.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.