# Mit Plugin externe Dateien liefern



## nemo86 (11. Okt 2009)

Hallo zusammen, 
ich schreibe ein Plugin dass für seine Ausführung zwei Dateien benötigt. Die Dateien werden mit dem Plugin mitgeliefert, nun findet er die nur, wenn ich bei der Programmierung den absoluten Pfad angebe (so muss auch der Benutzer den Pfad unter Einstellungen später ändern), was keine schöne Lösung ist. Gebe ich den relativen Pfad an, z.B. "/PluginFiles/datei1.txt" findet er schon beim Testen (Run As->Eclipse Appl) nichts, weil er relativ zum Eclipse Ordner sucht. Gibt es einen Weg das umzugehen?
Danke im Voraus.


----------



## Wildcard (11. Okt 2009)

Relativ zu welchem Verzeichnis sollen die Dateien denn später liegen und warum kannst du sie nicht einfach ins jar integrieren?


----------



## nemo86 (11. Okt 2009)

Ich hab vorgestellt, dass das Plugin in ein Standartverzeichniss im Eclipse installiert wird, entsprechend soll auch der Pfad relativ zu dem Ordner sein. Dafür muss ich irgendwie den Eclipseverzeichniss ermitteln.

Wie kann ich denn die in Jar Integrieren? Sorry für dumme Frage, bin "der blutiger Anfänger"


----------



## tobiash (12. Okt 2009)

Du kannst auf Dateien die im Bundle liegen relativ einfach zugreifen:


```
URL[] url = FileLocator.findEntries(Platform
					.getBundle(BUNDLE_ID), Path
					.fromPortableString("pfad/relativ/zum/Bundle"));
```

Das findet Dateien die im Bundle (=Plugin) liegen unabhängig davon wo es installiert ist.
Da bekommst du eine (bzw mehrere) URL heraus die idR ein spezielles Schema benutzt, z.b. "bundle://" womit außer Eclipse niemand viel anfangen kann. Du kannst das aber in eine normale "file://" URL umwandeln und auch ein File-Objekt erzeugen:


```
URL fileUrl = FileLocator.toFileURL(url[0]); 
File file = new File(fileUrl.toURI());
```

Das funktioniert natürlich nur wenn das Bundle auch im Dateisystem liegt was normalerweise aber der Fall sein sollte.
Wenn jemand eine Abkürzung kennt wäre ich selbst interessiert, so funktioniert es aber auf jeden Fall.

Viele Grüße,
Tobias


----------



## nemo86 (12. Okt 2009)

Danke für die Antwort, wie kann ich denn die Dateien in Bundle integrieren so dass sie auch mitinstalliert werden?


----------



## Wildcard (12. Okt 2009)

Einfach den Manifest Editor öffnen, dort auf den build.properties Tab gehen und die bin.includes anpassen


----------



## nemo86 (13. Okt 2009)

Vielen Dank, es hat alles perfekt funktioniert


----------

