# ImageIO Problem



## caphunter (30. Mrz 2010)

Moin Leute,

ich hab ein Problem mit einem Spiel dass ich vor kurzem gecodet hab.
Das Problem ist das File-Objekte nicht in einem Jar unterstützt werden, deshalb ist mir das auch nicht aufgefallen als ich es mit NetBeans hab laufen lassen.

Jetzt hab ichs mit URL-Objekten und dem Classloader versucht aber es kommt immer eine Fehlermeldung von wegen input == null.


```
private void initImages() throws IOException
    {
        path = "/src/data/";
        /*
        path = "src/data/";
        imgAlien = ImageLoader.getImage(path+"alien.gif");
        imgPlayer = ImageLoader.getImage(path+"fighter.gif");
        imgMissile = ImageLoader.getImage(path+"missile.gif");
        background = ImageLoader.getImage(path+"bg.gif");
        */
        imgAlien = ImageIO.read(getClass().getClassLoader().getResource(path+"alien.gif"));
        imgPlayer = ImageIO.read(getClass().getClassLoader().getResource(path+"fighter.gif"));
        imgMissile = ImageIO.read(getClass().getClassLoader().getResource(path+"missile.gif"));
        background = ImageIO.read(getClass().getClassLoader().getResource(path+"bg.gif"));
    }
```

Folgende Fehlermeldung kommt immer:

```
Exception in thread "main" java.lang.IllegalArgumentException: input == null!
        at javax.imageio.ImageIO.read(ImageIO.java:1362)
        at game.Game.initImages(Game.java:97)
        at game.Game.<init>(Game.java:38)
        at game.Starter.<init>(Starter.java:30)
        at game.Starter.main(Starter.java:47)
Java Result: 1
```

Hoffe jemand kann helfen.

PS: Habs auch schon nur mit this.getClass().getRessource(path+"*.gif"); wobei * für den jeweiligen Namen steht.


----------



## HoaX (30. Mrz 2010)

Mal ins Jar reingeschaut wie der Pfad wirklich heißt?


----------



## Ein Keks (30. Mrz 2010)

Der Pfad scheint falsch zu sein was bei "/src/data/" schonmal nicht verwunderlich ist. Zumindest das "/" am Anfang muss weg, wenn du mit getClassLoader() arbeitest. Bei getClass().getRessource(...) ist der Pfad relativ zur Klasse, bei getClass().getClassLoader().getRessource() hingegen der absolute Pfad in der Jar (also wenn die datei im package data liegt und Blubb.gif heißt: "data/blubb.gif")


----------



## caphunter (30. Mrz 2010)

Danke euch beiden!

Wie sagte Einstein: „Zwei Dinge sind unendlich: das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir noch nicht ganz sicher." Ich fühl mich angesprochen, hätte ja mal nen Blick in die Jar werfen können, aber ich dachte halt es ist dieselbe Ordnerstruktur wie normal auch.


----------

