class.getResource findet Datei nicht

DarthShader

Erfahrenes Mitglied
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:
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
 
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
 
Mit einer eleganten if-Abfrage könntest Du beide Fälle abdecken:
1. getResource()
2. falls null, dann direkt das Icon erzeugen
 
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?
 
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...:)
 
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.
 
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?
 
Zurück