# class.getResource findet Datei nicht



## DarthShader (16. April 2007)

Hallo,

ich habe ein kleines Problem beim Laden eines Icons. Um ein Icon in einer Applikation zu nutzen, sollte man ja
class.getResource benutzen, etwa so:


```
java.net.URL imgURL = ResourceManager.class.getResource( "c:/icon.png" );

if (imgURL != null)
{
    return new ImageIcon( imgURL, iconDescr );
}
else
{
    System.err.println( "Couldn't find file: c:/icon.png" );
}
```

Die Datei "c:/icon.png" existiert definitiv, und die Klasse "ResourceManager" liegt im Package "de.foo".
Leider ist "imgURL" immer null, er findet also das Icon nicht. Ich habe außerdem probiert: "/icon.png", "c:\\icon.png".

Hat jemand eine Idee, wieso er die Datei nicht finden kann?


Vielen Dank für Eure Hilfe


----------



## MeinerEiner_80 (16. April 2007)

Moin!
Man möge mich korrigieren, aber getRessource() findet imho nur Dateien, welche sich auch im Klassenpfad befinden...
Aber warum soll man ein Icon denn immer mit getResource() laden? Solang das Icon sich nicht in einem Archiv befindet, reicht es doch ,wenn du den Dateinamen dem Icon im Konstruktor übergibst..


*grüssle*
MeinerEiner


----------



## jeipack (16. April 2007)

MeinerEiner_80 hat gesagt.:


> Moin!
> Man möge mich korrigieren, aber getRessource() findet imho nur Dateien, welche sich auch im Klassenpfad befinden...



Ja genau.
getRessource würde ich eigentlich auch nur verwenden, wenn es in einem Archiv liegt oder die Ordnerstruktur nicht von vorn herein bekannt ist.


----------



## schnuffie (16. April 2007)

Mit einer eleganten if-Abfrage könntest Du beide Fälle abdecken:
1. getResource()
2. falls null, dann direkt das Icon erzeugen


----------



## DarthShader (16. April 2007)

Ich wollte getResource eigentlich verwenden, da es im Swing Tutorial von Sun so empfohlen und auch in allen Beispielen genutzt wird.

Gut, eigentlich lag das Icon irgendwo im classpath, ich muss das dann nochmal prüfen.

Man eine generelle Frage: wenn ich meine Applikation mit Icons (Bildern, sonstwas) ausstatte, und das Programm später als Jar ausgeliefert wird, sollte man solche Resourcen wie Icons irgendwie packen, oder ist es normal, die png Bilder einfach so im Jar zu halten, sodass sie jeder extrahieren könnte?


----------



## schnuffie (16. April 2007)

Alles was unveränderlich ist und zur Gesamtheit Deines Programms gehört, sollte auch mit ins JAR, also die PNGs auch.

Deine 248-seitige Doku natürlich nicht...


----------



## RealHAZZARD (16. April 2007)

Servus,

also ich schieße mich der Meinung an, dass es hier richtig verwendet werden kann. Das sagt wie schon genannt das JavaTutorial und auch die Insel.
Ich nehme das auch immer.


----------



## DarthShader (16. April 2007)

Und dennoch krieg ich es nicht zum laufen mit getResource.

Mein Projekt befindet sich in

  c:\projekte\testapp

Dessen sourcen in 

  c:\projekte\testapp\src

Das icon ist hier zu finden:

  c:\projekte\testapp\resource\icons\accept.png

Ich habe "c:\projekte\testapp\resource" zum classpath hinzugefügt in eclipse (muss das überhaupt sein?).

Ich versuche wie ganz oben angegeben, das Icon zu laden, mit dem Verzeichnis/Dateinamen "resource/icons/accept.png", dennoch kann er die Datei nicht finden (getResource gibt null zurück).

Wie muss denn bloss hier die richtige Pfadangabe zum icon sein?


----------

