# OSGi, Euqinox, innherhalb vom Bundle Pfad des zugehörigen jar-files ermitteln



## bananenkasper (4. Jun 2009)

Hallo zusammen,

gibt es eine Möglichkeit, programmatisch, innerhalb eines Bundles, den relativen oder absoluten Pfad des jar-Files zu ermitteln, das diesem Bundle entspricht?

kurz und prägnant (hoffentlich)


----------



## Wildcard (4. Jun 2009)

FAQ How do I find out the install location of a plug-in? - Eclipsepedia


----------



## bananenkasper (5. Jun 2009)

Hmmm.
"Platform" und "FileLocator" kennt mein Equinox nicht...
Ist das vielleicht speziell für Eclipse?


----------



## Wildcard (5. Jun 2009)

Ja, ist es. Ob es für reines OSGi eine Möglichkeit gibt kann ich dir nicht sagen, wüsste jetzt erstmal keine.


----------



## maki (5. Jun 2009)

Wozu brauchst du das denn wenn man fragen darf?
Vielleciht gibt es ja noch eine andere Möglichkeit...


----------



## bananenkasper (9. Jun 2009)

maki hat gesagt.:


> Wozu brauchst du das denn wenn man fragen darf?
> Vielleciht gibt es ja noch eine andere Möglichkeit...



lange geschichte...
Ich habe Bundles, die eine AbstractCalculation repräsentieren.

```
public class AbstractCalculation {

public final static void main(String[] args){
    // create new instance
    // call instance.calculate()
}

public final void setInstance(AbstractCalculation c){
instance = c;
}
public final void setData(Data data){
this.data = data;
} 
public abstract void calculate();

}
```
Diese Calculation soll gegebenenfalls mit 
	
	
	
	





```
new ProcessBuilder("java -jar calculation.jar").start();
```
Auf einem anderen System ausgeführt werden.
Und damit ich das so starten kann, brauche ich das jar file.
Mache es jetzt aber anders:
Ich nehme nicht direkt das Bundle-jarFile, sondern baue mir unterwegs eins.
siehe dazu auch
[thread]82738[/thread]
und
[thread]82632[/thread]


----------



## bananenkasper (9. Jun 2009)

BTW:
so bekommt man das jar File für ein Bundle:

```
private static File getClassFolder(final Class<?> clazz)
			throws URISyntaxException {
		return new File(clazz.getProtectionDomain().getCodeSource()
				.getLocation().toURI().getPath());
	}
```
Diese Methode gibt entweder das Verzeichnis zurück, Wo das class file liegt,
oder, falls das class file in einem jar steckt,
das jar file, aus dem Klasse geladen wurde.


----------

