Zugriff auf Komponenten im Jar-File

catarock

Grünschnabel
Habe wieder mal ein Problem,
habe ein Projekt mit dem JBuilder erstellt, danach mit dem Archiv-Builder das ganze in ein Jar-File geschickt. Jetzt habe ich ein paar jpeg Dateien, die sich im Ordner Icons befinden.
In der Entwicklungsumgebung sah das ganze folgendermassen aus:
din = package
- classes = hier liegen die Klassen
- icons
- src
- bak
usw.

in der Entwicklungsumgebung konnte ich die Bildchen über "icons/Bild1.jpg" ansprechen.
Wenn ich das ganze jetzt über den Jar-File ausführe werden die Bilder nicht mehr angezeigt. Wobei die Hierarchie jetzt so aussieht:
jarfile.jar
- din = hier liegen die Klassen
- Icons = hier liegen die Icons
- meta-inf = Manifest

Hat jemand eine Ahnung wie ich die Bildchen wieder zum Leuchten bringen kann?
Vielen Dank im Vorraus
Gruss Cata
 
Hallo!

Versuchs doch mal mit getResource(....) bzw. getResourceAsStream(...) welches du an einer Klasse aus deinem Jar aufrufst. Der Resourcen name ist dann der relative Pfad von der Klasse zur Datei.

Gruß Tom
 
Danke,
hat mir sehr weitergeholfen, habe noch den classLoader benötigt, ansonsten hat das mit getResource() einwandfrei funktioniert.
Bis zum nächsten mal ;)
Gruss Cata
 
Hallo zusammen,

habe da ein ähnliches Problem. Arbeite mit Eclipse und habe das Projekt mit „bin“ und „src“ erzeugt.

+ProjektName
|
+ bin
+ res
+ src

nun ist mein Problem das ich mit dem ClassLoader entweder was falsch mache oder es anders gehen muss ich habe im res Verzeichnis mein meine XML Dateien die ich einladen möchte komme aber an diese nicht heran.
Bsp.:

String xmlDatei = „res\menu_de.xml“;
InputStream is = ClassLoader.getSystemResourceAsStream(xmlDatei);

Kann mir da jemand einen Tipp geben?

mfg
 
Hallo!

Damit die XML Datei gefunden werden kann musst sie auch im Classpath liegen.
Versuch mal das Verzeichnis Res über Project Properties -> Java Build Path -> Source -> Add Folder -> Res hinzuzufügen.

Sollte das nicht gehen, leg das Res Verzeichnis einfach im Src Verzeichnis relativ zu einer Klasse deiner Wahl ab und suche die Resource dann per KlasseDeinerWahl.class.getResource("....);

Gruß Tom
 
Jupp Danke,

habe das „res“ Verzeichnis hinzugefügt wie du gesagt hast. Nun muss ich nur den Verzeichnisnamen (res) bei der Datei weglassen und es geht.

DANKE
 
So nun geht es zwar aber dadurch das ich den Res Ordner mit in den Classpath add’e kopiert er mir nun alle Ressourcen mit in den BIN Ordner so sollte es aber nicht sein. Ich will erreichen das ich Ordner in der JAR-Datei habe die immer für einen bestimmten zweckt dar sind.
 
Hallo!

Alles was sich unter Eclipse in einem Source-Folder (src, src-gen) befindet kommt bei einem Build automatisch ins bin Verzeichnis.

Gruß Tom
 
Hmm,
aber wie bekomme ich es hin, dass ich im jar-File die drei Ordner „bin“ „res“ und „src“ habe? Bekomme ich das mit ANT über die build.xml vielleicht hin?
 
Hallo,
ich hätte auch ein Problem mit JAR.
Auf Bilder habe ich mit getRessource zugriff, aber nicht auf Textdateien.
Ich habe in meinem JAR eine Textdatei, die ich gerne mit einem Reader zeilenweise auslesen würde.
Beim Zugriff auf das mit getRessource erstellte File erhalte ich einen Fehler. Er findet die Datei nicht.

Könnt ihr mir helfen?
 
Zurück