# Pfad der laufenden JAR ermitteln (mit Archivnamen)



## FriedWeasel (23. Feb 2011)

Hi

In einem kleinen Projekt von mir wird eine Installationsdatei (ein JAR-File mit einem Resourcen-Ordner und einer Installer-Klasse die diese dann an einem bestimmten Pfad wieder extrahiert) generiert.
Das schreiben der JAR mit allen Inhalten ist kein Problem, sowie das extrahieren der Inhalte, da es im Grunde genau wie ZIP funktioniert.

Mein Problem ist nur, dass ich zum entpacken die Enumeration der Files im JAR benötige welche ich extrahieren möchte (ja... der Inhalt ist dynamisch).


```
JarFile jarFile=new JarFile("some.jar");
		Enumeration entries=jarFile.entries();
```

Die Frage ist nun, wie bekomme ich den Pfad der JAR in dem sich die Installationsklasse befindet + den Namen der JAR (der soll auch dynamisch sein), denn mit folgendem Code (den ich ja schon gefunden habe) bekomme ich den Pfad bis zum File:


```
File file=new File(Installer.class.getProtectionDomain().getCodeSource().getLocation().getPath());
String pathToJar=file.getAbsolutePath();
```


----------



## KrokoDiehl (23. Feb 2011)

Statt 
	
	
	
	





```
getPath()
```
 gibt es ja auch 
	
	
	
	





```
getFile()
```
. Wenn ich etwas aus einem JAR heraus starte, dann liefert diese Zeile von dir genau die gewünschte JAR-Datei.
Aus der IDE (Eclipse) heraus gibt es nur das _bin/_-Verzeichnis, was ja nachvollziehbar ist.


----------



## FriedWeasel (23. Feb 2011)

Vielen herzlichen Dank!

mit dem folgenden Code habe ich es hinbekommen


```
File file=new File(Installer.class.getProtectionDomain().getCodeSource().getLocation().getFile());
		String pathToJar=file.getAbsolutePath();
```

... mir ist dabei noch aufgefallen, dass wenn ich das Projekt als executable JAR exportiere und die Option für Library handling (wohlgemerkt dass ich keine einzige fremd-API verwende) auf "Package required libraries into generated JAR" (vom Standard "Extract required libraries into generated JAR") stelle, eben die oben genannten Codezeilen ein anderes Ergebnis erzielen... (bei dieser Option wird ein Classloader-Package mit in die JAR gepackt das JARs in JARs handled).

Mit freundlichen Grüßen,
das frittierte Wiesel

EDiT: Ich benutze Eclipse wer es noch nicht erkannt hat ;-)


----------

