Classpath in PlugIns

Status
Nicht offen für weitere Antworten.

dzim

Top Contributor
Hallo zusammen,

ich hatte in letzter Zeit nicht gerade viel mit RCP zu tun, nun aber gibt es wieder ein paar Aufgaben dahingehend...
Und promt stolperten wir über ein Problem:
Wie haben hier ein paar Projekte, die noch aus der Zeit vor einer Integrierung in RCP stammen, diese in Eclipse zu RCP-Projekten umzuwandeln ist kein Problem, wurde auch schon lange gemacht und lief auch soweit erfolgreich.
Die beiden verwendeten Projekte besitzen im weitesten Sinne Textdateien im Classpath, die zur Laufzeit geladen werden sollen. Beide Projekte verwenden so xml-basierte Property-Dateien um verschiedene Einstellungen vorzunehmen.
So ist in einer ein DB-Zugang definiert, in anderen spezielle String-Ersetzungen, u.s.w.
Bislang hat alles gut funktioniert, wenn er diese Konfigurationen laden sollte - so weit so gut.
Nun aber sollen OpenOffice-Templates und zugehörige XSLT-Stylesheets für die content.xml und styles.xml geladen werden, die in einem separaten source-Folder liegen, geladen werden und hier geht nix mehr.
Der Eclipse-Classloader findet sie entweder nicht, oder aber ist SO dumm, dass er versucht bei Verwendung der .getResource().getFile()-Methode absolut von der Verzeichnisstruktur zum user (Linux) loszuwandern und nicht den Classpath mit einzubeziehen.
Allmählich haben wir aufgeben - es ist zu verrückt werden: Wenn man das Plug In als das urpsrüngliche Konsolenprogramm, dass es vor der Umwandlung in ein Plug In war und als solches immer noch verwendet wird, startet, findet der Clasloader die gesuchten Templates und Stylesheets im Classpath - als Plug In nicht.

Mir ist klar, das Eclipse RCP - oder bereits Equinox - einen eigenen Classloader pro Plug In nutzt, aber das erklärt nicht, warum er die gesuchten Objekte nicht findet.

Gestern kam mir der Gedanke, ob es vielleicht daran liegt, das das Plug In keinen Aktivator hat und somit vielleicht Teile des Plug Ins einfach nicht geladen wurde - aber sicher bin ich mir da nicht.

Kennt einer das Problem und weiß, wenn ja, wie es sich beheben lässt? Oder weiß jemand ob ich prinzipiell mit dem Activator-Gedanken recht haben könnte und wie der Activator aufgebaut sein muss, damit diese Dateien angesprochen werden können? Was muss denn alles im Activator aktiviert werden, damit sich solche Probleme evtl. vermeiden lassen (bislang reichte der Standard-Activator der RCP-PlugIn-Templates von Eclipse, an die ich maximal meine Message-Console rangehängt hab)?

Grüße und Danke!
Daniel
 

Wildcard

Top Contributor
getResource().getFile()? Wenn du deine Anwendung damals als jar verpackt hast, konnte das auch da schon nicht funktionieren, weil es keine Datei ist sondern ein Jar-Entry.
Bei Eclipse PlugIns lädt man resourcen üblicherweise über den FileLocator, aber wenn du getResource(AsStream) richtig verwendest, funktioniert es ebenfalls.
 

dzim

Top Contributor
Ich weiß, das es mit der .getResourceAsStream() aus jar-Files herraus klappt - so lade ich ja auch die Properties.
Problem ist folgendes: Das Program, das diese Templates u.s.w. verwendet, ist wie gesagt schon etwas älter - wurde in letzter Zeit durch mich zwar extrem aufgebohrt, aber das Lesen der Templates erfolt über File-Objekte (und daraus werden FileOutputStreams und ZipOutputStreams geöffnet).
Gleichzeitig öffnen wir ein ZipFile aus dem Template, um die Entries auszulesen.

Mein Problem ist die Umwandlung von Input- nach OutputStream...

Ich steh da gerade wirklich vor nem Problem, das ich zwar erkenne, aber nicht weiß, wie es zu beheben ist - und getResource().getFile() brachte mir eben ein File-Objekt - um mehr hab ich mich bis zu dem oben genannten Problem nicht gekümmert, da es auf der Konsole tat, was es sollte...
 

Wildcard

Top Contributor
Du musst aber in jedem Fall weg von den File Objekten, da es in einem Archiv keine Dateien geben kann, ein Archiv ist eine Datei.
 

dzim

Top Contributor
Ja, das ist mir mittlerweile - leider - bewusst geworden.
Unglücklichereise hilft mir das nicht bei dem Problem der ZipFiles...
 

dzim

Top Contributor
stimmt - da ich mich mit der zip API noch nie viel rumschlagen musste (hab nur bisher bereits programmiertes weiterverwendet oder angepasst) wusste ich davon noch nichts und werde es auf InputStreams umstellen

Danke :)
 

dzim

Top Contributor
Ok - nachdem ich ein paar Klassen anpassen musste (warum muss sich so was immer durch die Gegend ziehen) funktioniert es.
Danke nochmal!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G OSGi Bundle-ClassPath Plattformprogrammierung 3
F Ecilpse plugin und MWE Workflow: classpath Problem Plattformprogrammierung 12
T [solved] Eclipse RCP: Zugriff auf Classpath-Inhalt Plattformprogrammierung 4
N bundle und classpath Plattformprogrammierung 12
D RCP P2-Repository für Eclipse-Plugins Plattformprogrammierung 0
A RCP Objekt(parameter) zwischen Plugins austauschen Plattformprogrammierung 0
D RCP closed source RCP erweitern & Plugins nutzen Plattformprogrammierung 4
J Zwei Applikationen aus mehreren Plugins generieren Plattformprogrammierung 2
M RCP Ein Command in mehreren Plugins verwenden? Plattformprogrammierung 12
G RCP Abhängigkeiten von Eclipse Plugins Plattformprogrammierung 9
S Equinox: plugins und features Plattformprogrammierung 8
J Daten zwischen Plugins austauschen Plattformprogrammierung 4
M Daten zwischen 2 Eclipse-Plugins tauschen Plattformprogrammierung 5
P Wo im Projekt weitere Plugins anmelden ? Plattformprogrammierung 2
S PreferenceStore und unterschiedliche Plugins Plattformprogrammierung 4
lumo ECLIPSE RCP - mehrere plugins - eine resource? Plattformprogrammierung 3
M Teilweise Probleme beim Updaten von Plugins Plattformprogrammierung 3
S Versionsprobleme beim Erstellen eines Plugins Plattformprogrammierung 6
E Test von RCP Plugins in Fragmente oder Plugins Plattformprogrammierung 3
G Aufteilung Plugins Plattformprogrammierung 8
M JUnit 4.3.1 aus eclipse plugins durch junit 4.4 ersetzen Plattformprogrammierung 2
dzim java.lang.ClassNotFoundException beim laden eines Plugins Plattformprogrammierung 10
Paule Eclipse Instanz + eigene Plugins Plattformprogrammierung 4
S Plugins interagieren lassen Plattformprogrammierung 6
Wildcard Wie buildet ihr eure PlugIns? Plattformprogrammierung 6
dzim eigene Application und PlugIns Plattformprogrammierung 16
T [RCP] Was passiert genau beim laden eines Plugins? Plattformprogrammierung 4
G Eclipse, Plugins, Properties, und wo zum Geier steckt das? Plattformprogrammierung 21
lhein Sprachumschaltung eines eigenen Eclipse Plugins Plattformprogrammierung 8
T Kommunikation zwischen Plugins (RCP) Plattformprogrammierung 18

Ähnliche Java Themen


Oben