Alternative zu getClass().getResourceAsStream() ?

Status
Nicht offen für weitere Antworten.

ich_wills_wissen

Bekanntes Mitglied
Hallo zusammen :)

Habe gerade endlich den Grund dafür gefunden, warum meine Anwendung, die in einem Jar steckt
(Plugin für ne rcp-anwendung) nicht funktioniert:

Ich lade mittels

Code:
Buchenbg = new Image(Display.getCurrent(), getClass().getResourceAsStream("/rat2/bild.jpg"));

ein Bild, welches ich später auf einen Tabreiter klatschen will.
Wenn ich die Anwendung aus Eclipse heraus starte funktioniert alles super.
Aber wenn das ganze aus dem jarfile gestartet wird fliegt eine Exception, nämlich:

java.lang.IllegalArgumentException: Argument cannot be null

Der Fehler kommt auch, wenn ich stattdessen

Code:
Buchenbg = new Image(Display.getCurrent(), getClass().getResourceAsStream("bild.jpg"));

schreibe.
Das Jar-file sieht so aus:

[...]
rat2/bild.jpg
[...]
rat2/pane1/views/klasseDieDasBildHabenWill.class


An dem Display.getCurrent() kann es nicht liegen, das benutze ich auch schon weiter oben im Code
und da fliegt keine Exception..

Irgendeine Idee wie ich an meine Bilder komme ? ???:L


Beste grüße,

ich_wills_wissen :###
 

SebiB90

Top Contributor
1. kontrollier immer besser was null ist per print
2. du musst den pfad relativ zum pfad der class datei angeben, also ../../bild.jpg
 

ich_wills_wissen

Bekanntes Mitglied
Hallo SebiB90,

danke für Deine Antwort.
Leider funktioniert das ganze aber auch so nicht:

Code:
Buchenbg = new Image(Display.getCurrent(), this.getClass().getResourceAsStream("../../bild.jpg"));

this.getClass() liefer nicht null zurück.. :shock:

Das muss doch irgendwo herkommen...

Das ist der Codebereich, in dem die Exception fliegt:


Code:
	    try
	    {
	    Buchenbg = new Image(Display.getCurrent(), this.getClass().getResourceAsStream("../../buchen_TabItem_klein.jpg"));
		Resourcesbg = new Image(Display.getCurrent(), this.getClass().getResourceAsStream("../../Objekte_TabItem_klein.jpg"));
		Reservedbg = new Image(Display.getCurrent(), this.getClass().getResourceAsStream("../../Reserved_TabItem_klein.jpg"));	
		Confirmationbg = new Image(Display.getCurrent(), this.getClass().getResourceAsStream("../../Confirmation_TabItem_klein.jpg"));
		Configurationbg = new Image(Display.getCurrent(), this.getClass().getResourceAsStream("../../Configuration_TabItem_klein.jpg"));
	    }
	    catch(Exception e)
	    {
	    	Logger.getInstance().log(this.getClass().toString());
	    	Logger.getInstance().log(e.toString());
	    }

Die Namen der jpg Dateien habe ich gerade nochmal überprüft, alles exakt richtig (case sensitive).

hmm...
 

ich_wills_wissen

Bekanntes Mitglied
okay, hier kommt das null her:

hab folgendes geprüft:

if(this.getClass().getResourceAsStream("../../buchen_TabItem_klein.jpg")
if(this.getClass().getResourceAsStream("../../Objekte_TabItem_klein.jpg")
if(this.getClass().getResourceAsStream("../../Reserved_TabItem_klein.jpg")
if(this.getClass().getResourceAsStream("../../confirmation_TabItem_klein.jpg")
if(this.getClass().getResourceAsStream("../../Configuration_TabItem_klein.jpg")

das if ist jedesmal true, d.h. null.
Sicher, daß das mit dem Pfad relativ ist ?
Aus Eclipse heraus hat es ja auch so wie ich es urpsürnglich geschrieben hatte (rat2/meinbild.jpg)
funktioniert.

Sehr merkwürdig..

Sonst noch eine Idee woran das liegen könnte ?
 

Wildcard

Top Contributor
Code:
Buchenbg = new Image(Display.getCurrent(), getClass().getResourceAsStream("/rat2/bild.jpg"));
Diese Version hätte eigentlich funktionieren sollen.
Hast du mal überprüft ob die Bilder auch wirklich im generierten jar file liegen?
 

Dominicana

Aktives Mitglied
Also ich hole mir meine Bilder immer so :
Code:
ImageIcon deImg = new ImageIcon(hp.FrameRechts.class.getResource("Deutschland.gif"));
Dabei liegen die Bilder immer im selben Verzeichnis, wie die Class. Hier z.B "xyz.jar/hp/Deutschland.gif". "FrameRechts" ist in dem Fall der Name der Klasse, welche unter "xyz.jar/hp/FrameRechts.class" gespeichert ist.
 

Wildcard

Top Contributor
Dominicana hat gesagt.:
Dabei liegen die Bilder immer im selben Verzeichnis, wie die Class. Hier z.B "xyz.jar/hp/Deutschland.gif". "FrameRechts" ist in dem Fall der Name der Klasse, welche unter "xyz.jar/hp/FrameRechts.class" gespeichert ist.
Nur ist es eben nicht unbedingt wünschenswert Resourcen und Klassen im selben Verzeichnis zu speichern.
Ausserdem scheint ich_wills_wissen's Code auf den ersten Blick korrekt zu sein, daher die Frage ob die Bilder auch wirklich mit in das jar verpackt wurden und Eclipse nicht nur die class Dateien exportiert hat.
 

8ull23y3

Bekanntes Mitglied
Öffne mal dein Jar-File mit einem Packer alá WinRar oder ähnlichem und schau mal nach ob da deine Bildchen mit drin sind. Das ist das was Wildcard meinte.
 

ich_wills_wissen

Bekanntes Mitglied
Hallo zusammen,

vielen Dank erstmal für die Vielen Antworten.
Die Bilddateien sind in dem jar-file enthalten (hatte ich ja weiter oben geschrieben)

Das Jar-file sieht so aus:

[...]
rat2/bild.jpg
[...]
rat2/pane1/views/klasseDieDasBildHabenWill.class


Mit ist vorhin aufgefallen, daß das Laden von Bildern aus einer anderen Klasse heraus funktioniert,
und zwar mit einer absoluten Pfadangabe "/rat2/Bilddatei.jpg".

Ich habe gerade nochmal ein wenig herumprobiert und wenn ich ein this vor das getClass()...
schreibe funktioniert das ganze:

Code:
Reservedbg = new Image(Display.getCurrent(), this.getClass().getResourceAsStream("/rat2/Reserved_TabItem_klein.jpg"));

Das ganze finde ich jetzt zwar ein wenig verwirrden, da this.getClass() eigentlich in meinem Falle das
selbe ist wie getClass() aber gut.. ich bin jetzt erstmal froh, daß es überhaupt läuft,
auch wenn ich noch nicht ganz verstehe warum...

Vielen Dank aber auf jeden Fall für eure ausdauernde Hilfe !!! :D
Ihr habt mir die richtigen Impulse gegeben, sonst wär ich wahrscheinlich nicht auf die Idee gekommen.

Beste Grüße,

ich_wills_wissen :###
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Gibt es mittlerweile eine Alternative zu DaisyDiff Allgemeine Java-Themen 2
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
Zrebna Alternative Darstellung eines Codesnippets Allgemeine Java-Themen 33
W Alternative für Threads Allgemeine Java-Themen 6
Thallius Alternative für SwingWorker Allgemeine Java-Themen 5
J Suche Alternative zu Jasper Reports Allgemeine Java-Themen 4
M Suche Alternative zu JFreeChart Allgemeine Java-Themen 11
D Konstruktor - jedes Objekt einzeln erzeugen - alternative? Allgemeine Java-Themen 8
M DAOs veraltet - was ist die Alternative? Allgemeine Java-Themen 13
MiMa Array umbau oder Alternative? Allgemeine Java-Themen 5
C Alternative zu NetworkX in Java Allgemeine Java-Themen 1
M Alternative zur Serialisierung.. Protobuf? Allgemeine Java-Themen 9
B Alternative zu nebenläufigen Prozessen Allgemeine Java-Themen 4
BonoBoo Alternative zum endlosen Instanzieren Allgemeine Java-Themen 2
F Platzsparende Alternative zu .txt-Dateien Allgemeine Java-Themen 12
E Gewollte Endlosschleife unterbrechen oder Alternative gesucht Allgemeine Java-Themen 2
F Alternative sun.jdbc.odbc.JdbcOdbcDriver (Access Datenbank) Allgemeine Java-Themen 2
F alternative zu "JPEGImageDecoderImpl" Allgemeine Java-Themen 2
T Timer oder Alternative? Allgemeine Java-Themen 3
G Alternative zu .properties Dateien Allgemeine Java-Themen 20
S Alternative zu SortedMap? Allgemeine Java-Themen 8
H Alternative zu Stack Allgemeine Java-Themen 3
pikay Jar2Exe Alternative? Allgemeine Java-Themen 17
E javax.comm: Suche eine open source Alternative zu rxtx Allgemeine Java-Themen 8
H Alternative if Schreibweise mit ? Allgemeine Java-Themen 10
G suche Property alternative Allgemeine Java-Themen 4
H Wie schön oder unschön ist dieser code - alternative ? Allgemeine Java-Themen 5
E Viele if Abfragen auf viele Strings --> Alternative zu if Allgemeine Java-Themen 8
G libext Alternative? Allgemeine Java-Themen 5
S Alternative zu Robot (wegen Umlauten) Allgemeine Java-Themen 13
foobar Alternative zu JavaHelp gesucht Allgemeine Java-Themen 2
D System.setProperty alternative Allgemeine Java-Themen 4
J alternative zu rsh ? Allgemeine Java-Themen 5
K KeyListener-Alternative ohne anfängliches Delay ? Allgemeine Java-Themen 5
G Alternative zu split() Allgemeine Java-Themen 3
K Alternative zu JNI Allgemeine Java-Themen 3
P Alternative zu replaceAll (jdk < 1.4) Allgemeine Java-Themen 14
M Alternative zu Thread : stop() ? Allgemeine Java-Themen 10
G System.out.println(is.getClass().getName()); Allgemeine Java-Themen 15
K <T>.getClass Allgemeine Java-Themen 3
E Class.getResourceAsStream() gibt null zurück Allgemeine Java-Themen 2
S Datei wird nicht gefunden Thread.currentThread().getContextClassLoader().getResourceAsStream() Allgemeine Java-Themen 1
O getResourceAsStream() Allgemeine Java-Themen 2
nrg new Reader(dateiname) und getResourceAsStream Allgemeine Java-Themen 17
B getResourceAsStream - standalone Anwendung vs. Web-Anwendung Allgemeine Java-Themen 2
M getResourceAsStream immer null Allgemeine Java-Themen 4
F mit getResourceAsStream () Datei im Classpath suchen Allgemeine Java-Themen 15
D GetResourceAsStream - Stream closed exception Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben