Webstart Resource aus .jar laden

Trevanian

Mitglied
Hallo alle zusammen,

bis jetzt habe ich nie einen Forenbeitrag erstellen müssen um eine Lösung zu finden, aber diesmal komme ich einfach wirklich nicht weiter:

Ich habe eine Software geschrieben, welche ich als .jar verbreite. Die Anwendung benötigt einige Icons (.png).

In meinem Eclipse-Workspace befindet sich folgende Ordnerstruktur:

Kompilierte Dateien: bin/de/home/tinyadmin/
Resourcen: bin/de/home/tinyadmin/resource/
Sourcecode: src/de/home/tinyadmin/

Meine Icons binde ich mit ClassLoader.getSytemResource("de/home/tinyadmin/resource/bild.png") ein, das funktioniert auch wunderbar.
Ich erstelle nun mit Eclipse ein .jar (Rechtsklick auf mein Projekt ---> Export --> "Runnable Jar") und dieses funktioniert auch problemlos.

Nun wollte ich Java-Webstart ausprobieren: Beim Start gibt es eine NullPointerException, da die Icons nicht gefunden werden können.

Ich habe daraufhin eine Methode geschrieben, welche mir die Icons auf die alt gewohnte Art und Weise einlädt (ClassLoader.getSystemResource....) und falls dies eine Exception wirft, wird eine andere Methode verwendet. Dies tat ich, da ich gelesen habe, dass das Einlesen unter Java Webstart so nicht funktioniert.

Leider finde ich nun keinen passenden Weg um meine Icons unter Java Webstart einzulesen, folgende Wege habe ich probiert:
  • <Klasse_aus_meinem_Programm>.class.getResource("bild.png")
  • <Klasse_aus_meinem_Programm>.class.getResource("/bild.png")
  • <Klasse_aus_meinem_Programm>.class.getResource("resource/bild.png")
  • <Klasse_aus_meinem_Programm>.class.getResource("/resource/bild.png")
  • <Klasse_aus_meinem_Programm>.class.getResource("de/home/tinyadmin/resource/bild.png")
  • <Klasse_aus_meinem_Programm>.class.getResource("/de/home/tinyadmin/resource/bild.png")

Die gleichen Kombinationen habe ich auch für Thread.currentThread().getContextClassLoader().getResource(<kombination>) und für <Klasse_aus_meinem_Programm>.class.getClassLoader().getResource(<kombination>) durchgetestet: ohne Erfolg.

Ich habe den resource/ -Ordner vorsichtshalber auch immer nochmals direkt in das .jar (/resource) und nicht nur in den Ordner, in dem die kompilierten Klassen liegen (/de/home/tinyadmin/resource) gelegt. Ich weiß jetzt echt nicht mehr weiter, es findet einfach meine Icons nicht.

Im .jar-File selbst sieht alles gut aus, ich habe auch versucht "nur ein Jar-File" mit Eclipse zu erstellen (also nicht ein "Runnable Jar"): ebenfalls ohne Erfolg.

Hilfe! :(

Gruß,

Trev
 

Hogli

Mitglied
Hallo,
unter Webstart klappt bei mir folgendes am sichersten:

Java:
ImageIcon icon = new ImageIcon(Thread.currentThread().getContextClassLoader().getResource("de/home/tinyadmin/resource/bild.png"));

Die Bilddateien liegen dabei aber im Source-Ordner (src) in einem eigenen package genau wie die Java-Dateien. Die Resource wird dabei genauso angegeben wie vollqualifizierte Klassennamen nur statt '.' halt der slash '/'.

Wenn es nicht klappt, dann wird das jar-File vielleicht nicht richtig verteilt, bzw. der Webstart-Cache aktualisiert nicht richtig. Dann mal im 'Java Control Panel' die temporären Internetdateien löschen.

Grüße Hogli
 

Trevanian

Mitglied
Mein Projekt in Eclipse sieht wie folgt aus:
folder.png


Folgendes versuche ich, um ein Icon einzuladen:
Java:
ImageIcon icon_ref = new ImageIcon(Thread.currentThread().getContextClassLoader().getResource("/de/home/tinyadmin/resource/bild.png"));

Wenn ich nun versuche meine Webstart-Applikation zu starten (egal ob direkt vom Server oder mit javaws), dann erhalte ich folgende Exception:

Code:
java.lang.NullPointerException
	at javax.swing.ImageIcon.<init>(ImageIcon.java:167)
	at de.home.tinyadmin.IOHelfer.getIcon(IOHelfer.java:206)
	at de.home.tinyadmin.TinyAdminGUI.createActionButtons(TinyAdminGUI.java:564)
	at de.home.tinyadmin.TinyAdminGUI.<init>(TinyAdminGUI.java:160)
	at de.home.tinyadmin.TinyAdminC.<init>(TinyAdminC.java:88)
	at de.home.tinyadmin.TinyAdminC.main(TinyAdminC.java:101)
	.....
IOHelfer:206 ist genau die Zeile, in welcher der obige Code zum Laden des Icons steht.

Was mache ich nur falsch?

Gruß,

Trev
 

Wildcard

Top Contributor
Stimmt die Groß- Kleinschreibung? Ein beliebter Fehler, weil es (auf Windows) in der IDE tut und im Jar dann nicht mehr.
 

Trevanian

Mitglied
Ich habe da wohl einen ziemlich blöden Fehler gemacht: nach jeder Änderung habe ich es wieder mit "javaws" getestet, ohne dabei daran zu denken, dass er das .jar ja immer vom Server bezieht. Da war es dann natürlich egal, ob der Code in meinem lokalen Jar einwandfrei arbeitet.

Die korrekte Lösung war:

Java:
ImageIcon icon_ref = new ImageIcon(Thread.currentThread().getContextClassLoader().getResource("de/home/tinyadmin/resource/bild.png"));

Gruß,

Trev
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Maven add resource Tools - Maven, Gradle, Ant & mehr 0
H Maven Assembly mit lib-Verzeichnis und Resource Verzeichnis Tools - Maven, Gradle, Ant & mehr 5
D [maven] dll-resource einbinden - library.path setzen Tools - Maven, Gradle, Ant & mehr 4
D [Maven] mehrere Abhängigkeiten benutzen gleichbenannte aber verschiedene Resource Tools - Maven, Gradle, Ant & mehr 3
H Maven externe resource hinzufügen Tools - Maven, Gradle, Ant & mehr 3
B Webstart Java Webstart hängt sich beim Laden auf! Tools - Maven, Gradle, Ant & mehr 8
S .jars in einem Ornder automatisch laden lassen Tools - Maven, Gradle, Ant & mehr 2
H Applet applet neu laden im browser Tools - Maven, Gradle, Ant & mehr 10
K Webstart .class Datei über Reflection laden Tools - Maven, Gradle, Ant & mehr 3
E Webstart Laden von Tiff-Bildern als BufferedImage und TFW aus einem JAR Tools - Maven, Gradle, Ant & mehr 3
G Webstart Problem mit Adressierung bei Laden von Datei aus jar (Webstart) Tools - Maven, Gradle, Ant & mehr 5
G Textfile in Applet laden möglich? Tools - Maven, Gradle, Ant & mehr 2
U Zertifikat zum Signieren in keytool laden Tools - Maven, Gradle, Ant & mehr 2
T Maven: Abhängigkeit im Jetty laden Tools - Maven, Gradle, Ant & mehr 10
B Hudson - Resourcen laden Tools - Maven, Gradle, Ant & mehr 11
Icewind Applet reagiert nach neu laden der Webseite nicht mehr verlässlich auf KeyEvents Tools - Maven, Gradle, Ant & mehr 6
grudge File in Applet laden Tools - Maven, Gradle, Ant & mehr 4
S Ladebalken beim laden des Applets Tools - Maven, Gradle, Ant & mehr 9
S HttpClient in Applet - html-quellcode laden möglich? Tools - Maven, Gradle, Ant & mehr 3
S Applet schneller laden Tools - Maven, Gradle, Ant & mehr 4
D Fehler beim Applet laden! Tools - Maven, Gradle, Ant & mehr 9
G Bilder von Server Laden Tools - Maven, Gradle, Ant & mehr 4
S applet ueber mehrere ordner hinweg laden Tools - Maven, Gradle, Ant & mehr 2
C Applet + Treiber laden (J/Connector) Tools - Maven, Gradle, Ant & mehr 2
G Java Applet neu laden Tools - Maven, Gradle, Ant & mehr 3
X Problem mit Bilder laden Tools - Maven, Gradle, Ant & mehr 3
D Im Hintergrund laden Tools - Maven, Gradle, Ant & mehr 5
A JNLP Datei aus Application laden Tools - Maven, Gradle, Ant & mehr 4
K .class variabel laden Tools - Maven, Gradle, Ant & mehr 21
M URL im Browser laden? Tools - Maven, Gradle, Ant & mehr 9
saxos1983 Fehlerüberprüfung beim Laden von Bilder Tools - Maven, Gradle, Ant & mehr 3
S Aus Applet per Button-Klick anderes Applet in Browser laden Tools - Maven, Gradle, Ant & mehr 7
H animiertes GIF mit Mediatracker laden Tools - Maven, Gradle, Ant & mehr 2
G Fehler beim Laden des Applets Tools - Maven, Gradle, Ant & mehr 7
S Grafik von Server laden? Tools - Maven, Gradle, Ant & mehr 4
S Access Denied beim Bild laden Tools - Maven, Gradle, Ant & mehr 7
S Dateien laden ? Tools - Maven, Gradle, Ant & mehr 2
K Bilder in Applets laden Tools - Maven, Gradle, Ant & mehr 3
G Bild im Applet laden und ausgeben Tools - Maven, Gradle, Ant & mehr 2
R Mein Applet brauch ewig lange zum laden. Tools - Maven, Gradle, Ant & mehr 5
S Sound/Midi Dateien erst komplett laden Tools - Maven, Gradle, Ant & mehr 12

Ähnliche Java Themen

Neue Themen


Oben