# Externe Dateien im jar File



## Jorsch07 (28. Jun 2007)

Hallo Zusammen.

Wenn ich mein Applet in eclipse zusammenbaue, erstelle ich einen neuen Ordner. In diesen Ordner importiere ich dann z.B. ein Bild welches ich dann mit "./images/img01.jpg" ansprechen kann.

Wenn ich mein Projekt dann als jar-File exportiere wird die Verzeichnisstruktur natürlich angelegt, allerdings läuft das Applet nicht an, da es den Pfad auf dem Server sucht und nicht in der jar-Datei.

Ich könnte nun mit getCodeBase() den Pfad ermitteln und entsprechend alle externen Dateien auf den Server laden.

Gibt es eine Möglichkeit die Dateien im jar-File direkt zu addressieren?

Vielen Dank 
Gruß
Jorsch


----------



## L-ectron-X (28. Jun 2007)

```
Image image = getImage(getClass().getResource("bild.jpg"));
```
Oder auch mal die Forensuche benutzen...


----------



## Gonzo17 (5. Aug 2009)

Ich weiss, ein uralter Schinken hier, aber da ich gerade auf der Suche nach der Lösung war und es bei mir nicht geklappt hat, wie L-ectron-X es geschrieben hat, möchte ich meine Lösung für alle Suchenden preisgeben. 


```
InputStream stream = getClass().getClassLoader().getResourceAsStream(
				"bild.jpg");
```

Funktioniert mit Sicherheit auch mit "getResource()", das entscheidente ist, dass der ClassLoader verwendet wird. Wenn ich nur "getClass()" aufrufe, dann funktioniert es zwar innerhalb von Eclipse, aber wenn ichs dann exportiere, dann findet er die Datei innerhalb der .jar nicht mehr. Ich denke das liegt wohl daran, dass außerhalb von Eclipse ein anderer ClassLoader verwendet wird für die Klassen.


----------



## L-ectron-X (5. Aug 2009)

Ich glaube eher, du hast die Grafik nicht in ein Image geladen, sondern in ein File. Oder?


----------



## Gonzo17 (5. Aug 2009)

Nene, bei mir wars aber auch kein Bild (hab das nur von dir oben übernommen), sondern ein .properties-File. Macht aber keinen Unterschied, weil stream bei mir null war, wenn ich ohne den Classloader außerhalb von Eclipse versucht habe, die Datei zu laden. Innerhalb der Eclipse-Umgebung wars kein Problem. Und mit Classloader isses überall möglich.


----------

