Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Jars, Jars, Jars (zum verzweifeln)

0 views
Skip to first unread message

Kurt Schmied

unread,
Mar 27, 2002, 3:47:19 AM3/27/02
to
Jars, Jars, Jars (zum verzweifeln)

Hallo,

oben in einem Topic hatten mir paar Leute bei den jars bereits geholfen
und ich dachte dann ich wäre am Ziel aber leider nein.
Also kurze Erklärung:
Früher band ich Bilder etc. immer mir festen Adressen ein z.B.:
C://java/Projects//Testarchiv//resources//info.gif
Dies war natürlich nicht der Weisheit letzter Schluß, weil es dann nur
fkt. wenn die Bilddateien auch genau dort waren.

Jetzt benutze ich folgende Varianten:
// private Image image =
Toolkit.getDefaultToolkit().getImage(ClassLoader.getSystemResource("testarchiv/resources/info.gif"));
private Image
image=Toolkit.getDefaultToolkit().getImage(getClass().getResource("/testarchiv/resources/info.gif"));

oder allgemein so:
// url
=this.getClass().getResource("/testarchiv/resources/info.gif"); //
besser
// url =
ClassLoader.getSystemResource("testarchiv/resources/info.gif"); //geht
auch

Im JBuilder gehen beide Wege, in der jar Datei keiner von beiden.
Dies ging unter dem JBuilder auch ganz prima. Wenn ich mir die url
ausdrucken ließ, was sie korrekt ergänzt wurden.

Wenn ich es aber vom archiv aus starte, bekomme ich aber
url=null???????????????
Folglich findet er sie nicht!
Und dazu diese tolle Fehlermeldung:

Uncaught error fetching image:
java.lang.NullPointerException
at
sun.awt.image.URLImageSource.getConnection(URLImageSource.java:102)
at
sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:111)
at
sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.j
ava:251)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:217)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:185)

-----------------------------------------------------------------
Für die textdatei schrieb ich:

System.out.println("prFileName: " + prFileName);
InputStream inStr =
this.getClass().getResourceAsStream(prFileName);
System.out.println("inStr: " + inStr);
in = new BufferedReader(new InputStreamReader(inStr));
Auch das fkt. im JBuilder tadellos.
Auf der Konsole vom jar File kommt aber folgende Ausgabe
prFileName: /testarchiv/dat/profile.txt
inStr: null


Die jar Dateien habe ich sowohl per Hand erstellt als auch mit der
Archivfunktion vom JBuilder. Das Ergebis ist dasselbe.
Also ich glaube nicht, dass ich da was falsch mache.
Die Verzeichnisstruktur des JBuilder Projekts:
D:\java\my\uni\testarchiv mit der testarchiv.jpr
D:\java\my\uni\testarchiv\src\testarchiv\client mit den
Client-Sourcedateien (sind im Package testarchiv.client)
D:\java\my\uni\testarchiv\src\testarchiv\server mit den
Server-Sourcedateien (sind im Package testarchiv.server)
D:\java\my\uni\testarchiv\classes\testarchiv\client mit den
Client-Klassendateien (sind im Package testarchiv.client)
D:\java\my\uni\testarchiv\classes\testarchiv\server mit den
Server-Klassendateien (sind im Package testarchiv.server)
D:\java\my\uni\testarchiv\classes\testarchiv\dat mit der Textdatei für
die Serverklassen
D:\java\my\uni\testarchiv\classes\testarchiv\resources mit den
Bildateien für den Client z.B.: info.gif

Es sind zwei jars eine für den Server mit der Startklasse
stahltrager.server.TCPServer und für den Client
testarchiv.client.Start .
Dann habe ich die jars auf zwei unters. Wegen mit gleichem Resultat
erzeugt.

Der Inhalt der client.jar sieht dann wie folgt aus:
Verz. meta-inf
Verz. testarchiv\client mit den Client Klassen
Verz. testarchiv\resources mit den Bildern

Der Inhalt der server.jar sieht wie folgt aus:
Verz. meta-inf
Verz. testarchiv\server mit den ServerKlassen
Verz. testarchiv\dat mit der zu verarb. textdatei

Das ich das irgendwie vertauscht habe, kann ich auch ausschließen. Es
geht auch nicht, wenn ich alles reinmache und nur die Startklasse
variiere.

Ich bin dem Verzweifeln nahe. Was zum Teufel mache ich denn hier noch
falsch?
Vielen herzlichen Dank, Kurt

Kurt Schmied

unread,
Mar 27, 2002, 11:48:47 AM3/27/02
to
Keiner eine Idee???
Bitte, bitte, Kurt

Walter Hipp

unread,
Mar 27, 2002, 1:43:33 PM3/27/02
to

"Kurt Schmied" <Kurt.S...@gmx.net> schrieb im Newsbeitrag
news:3CA18717...@gmx.net...
>
Toolkit.getDefaultToolkit().getImage(ClassLoader.getSystemRe
source("testarchiv/resources/info.gif"));

^^^^^^^^^^^^^^^^^^
Toolkit.getDefaultToolkit().getImage(myClass.getClass().getR
esource("resources/info.gif"));
am 26.03. 18:55 antwortetet Paul Ebermann auf Dein Posting:
>Du solltest normalerweise nicht
> getSystemRessource()
>benutzen, weil dann eben nur im System-Pfad gesucht wird.
>Besser ist die Verwendung irgendeiner eigenen Klasse,
>und getClass().getRessource("...");
[...]
warum verwendest Du den gleichen Code nocheimal?
was ist testarchiv ? das jar ? wenn ja, das jar wird nicht
angegeben.
Gruß Walter

Kurt Schmied

unread,
Mar 27, 2002, 3:32:51 PM3/27/02
to

Walter Hipp wrote:

Wr doch einkommentiert
verwendet habe ich nun
this.getClass().getResource("/testarchiv/resources/info.gif");
testarchiv heißt das JBuilder Projekt
die packages sind auch testarchiv.client
und testarchiv.server


Kurt Schmied

unread,
Mar 27, 2002, 3:33:19 PM3/27/02
to
wie bereits erwähnt auch das geht nicht

Walter Hipp

unread,
Mar 27, 2002, 5:17:52 PM3/27/02
to

"Kurt Schmied" <Kurt.S...@gmx.net> schrieb im Newsbeitrag
news:3CA22C8F...@gmx.net...

> wie bereits erwähnt auch das geht nicht
Image image =
Toolkit.getDefaultToolkit().getImage(getClass().getResource(
"testarchiv/resources/info.gif")); muß funktionieren. Da es
das offensichtlich nicht tut, ist Deine Pfadangabe falsch.
Bei obiger Pfadangabe befindet sich die anfordernde Klasse
im testarchiv und das info.gif in: testarchiv/resources.
Ein anderes Beispiel: Das jar sei so organisiert:
hauptpackage/images und hauptpackage/helppackage/images.
Dann lautet der Pfad für Klassen im Hauptpackage:
Image image =
Toolkit.getDefaultToolkit().getImage(getClass().getResource(
"images/info.gif"));
und für Klassen im Helppackage ebenfals:
Image image =
Toolkit.getDefaultToolkit().getImage(getClass().getResource(
"images/info.gif"));
Wobei nun images im helppackage verwendet wird.
hoffe geholfen zu haben
Walter

0 new messages