news://de.comp.lang.java:119/c4c0c5$oj2$1...@fbi-news.cs.Uni-Dortmund.DE
will mir auch nicht richtig helfen.
Starte ich mein Programm von Eclipse aus ist es kein Problem mittels
myImage = Toolkit.getDefaultToolkit().getImage(fileName);
Grafiken zu laden und diese zu verwenden.
Wenn ich das Projekt aber in ein ausführbares jar-file exportieren
will, so werden die Grafiken nur angezeigt, wenn das Verzeichnis mit
den Grafiken im gleichen Verzeichnis wie das jar liegt. Das
Grafik-Verzeichnis innerhalb des jar führt nicht zum gewünschten
Erfolg, nur außerhalb.
Wenn ich nun Alexander Fierochs Variante
myImage=Toolkit.getDefaultToolkit().getImage(getClass().getResource(fileName));
versuche erhalte ich:
Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:99)
at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:108)
atsun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:248)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)
Vielleicht hat ja nochmal jemand Lust sich mit der Thematik zu
befassen, danke schonmal,
Martin
Frank Dreyer schrieb:
>
> Wo liegt denn bei dir die Datei und was enthält fileName?
>
>
fileName enthält eine relativa Pfadangeabe, also konkret z.B.
"gfx/dateiname.gif", die ensprechende Datei liegt im jar-file im
Ordner gfx, welcher auf gleicher Ebene mit den obersten packages liegt.
Hätte nicht gedacht, daß so spät noch Antwort kommt, vielen Dank für
die Nachtschicht!
Grüße,
Martin
Martin Staudigel wrote:
> fileName enthält eine relativa Pfadangeabe, also konkret z.B.
> "gfx/dateiname.gif", die ensprechende Datei liegt im jar-file im
> Ordner gfx, welcher auf gleicher Ebene mit den obersten packages
> liegt.
Genau das ist dein Problem.
Bei getClass().getResource("gfx/dateiname.gif") wird die Datei relativ zum
Package der von getClass() gelieferten Klasse gesucht. Probier es mal mit
getClass().getResource("/gfx/dateiname.gif").
Gruß,
Karl
www.jformdesigner.com
Uncaught error fetching image:
[...]
angenommene Hirarchie innerhalb des jars:
package eins
|-class eins (lädt Grafik aus images folder eins) (obige Methode
funktioniert)
|-images folder eins
|--package zwei
|-class zwei (lädt Grafik aus images folder eins) (obige Methode
funktioniert nicht)
|-images folder zwei
(wenn class zwei die Grafik aus images folder zwei lädt) (wird obige
Methode funktionieren)
|-- package drei usw.
daraus ergibt sich bei Verwendung obiger Methode: die Grafiken müssen
in der gleichen Verzeichnisebene wie die benutzende Klasse liegen, also ev.
mehrere img Verzeichnisse.
2. Möglichkeit:
ein imgages Verzeichnis in der top level ebene und z. B.:
java.net.URL url =
EineTopLevelKlasse.returnMainClass().getResource("images/info.gif");
wobei EineTopLevelKlasse die/eine Klasse auf top level ebene ist.
z..b in der Klasse, die die main Methode enthält:
...
public Class EineTopLevelKlasse
{
....
public Class returnMainClass()
{
return getClass();
}
diese Methode muß nun allen Klassen,
die auf das top level Verzeichnis "imgages" zugreifen, bekannt gemacht
werden.
...
}
weitere Möglichkeiten...
Gruß Walter
Hallo Karl, habe das Verzeichnis mit den Grafiken in das richtige
Verzeichnis (das der aufrufenden Klasse) gepackt und es funktioniert
wie gewünscht! Danke!
Grüße,
Martin
Walter Hipp schrieb:
> daraus ergibt sich bei Verwendung obiger Methode: die Grafiken müssen
> in der gleichen Verzeichnisebene wie die benutzende Klasse liegen, also ev.
> mehrere img Verzeichnisse.
Da die aufrufende Klasse die einzige ist, die externe Grafiken
verwendet, habe ich mich für Variante 1 entschieden, aber danke für
die weiteren Erläuterungen, Möglichkeit 2 finde ich sehr elegant und
werde mir die Vorgehensweise für zukünftige Projekte merken...
Danke,
Martin