OSGi Dependency Loading

najjannaj

Aktives Mitglied
Hallo,
ich habe folgendes Problem.

Ich habe ein Eclipse mit XText installiert sowie EMF, etc.. Nun möchte ich ein Plug-In für XText entwickeln... Das Problem liegt nun bei den Abhängigkeiten unter den Plug-Ins bei dem mir die Ideen ausgehen. Das Problem klingt wohl zunächst stark so als benötige man XText-Kenntnisse dies ist jedoch meiner Meinung nach nicht der Fall..

Es existiert ein Plug-In-Project "de.xtext.ocl", dieses hat Abhängigkeiten zu weiteren Eclipse-Plug-Ins in meinem Fall zu DresdenOCL-Jars..

Das Plug-In "de.xtext.ocl" wird nun in einer neuen Eclipse-Umgebung gestartet mit auch den benötigten Plug-Ins. "Validate Plug-ins" liefert auch keinen Fehler. Beim starten dieser Eclipse-Umgebung sind zunächst alle Plugins im <<LAZY>>-Modus.

Zunächst wird dann ein XText-Projekt erstellt und dort wird in einem der Workflows eine Klasse des Plug-Ins "de.xtext.ocl" zugegriffen. Beim ausführen dieses Workflows wird ein Aufruf in die Klasse geleitet welcher zunächst ausgeführt wird bis ein Zugriff aus dem Plugin in eins der weiteren Plug-Ins (von DresdenOCL) benötigt wird. Dabei bekomme ich eine ClassNotFound-Exception....

6374 [main] ERROR mf.mwe2.launch.runtime.Mwe2Launcher - tudresden/ocl20/pivot/modelbus/ModelBusPlugin
java.lang.NoClassDefFoundError: tudresden/ocl20/pivot/modelbus/ModelBusPlugin

Dies kommt wohl dadurch das die Plug-Ins immer noch im <<LAZY>>-Modus sind und nicht geladen werden.

Hat nun jemand eine Idee wie ich diese Plug-Ins geladen bekomme ohne diese im XText-Projekt als Dependency anzugeben, ich möchte diese lediglich in meinem eigenen Plug-In-Projekt "de.xtext.ocl" als Dependency angeben.. ??

Ich wäre für jeden Tipp sehr sehr Dankbar!
Vielen Dank und viele Grüße
Najjannaj
 
mit packages tudresden.ocl20.pivot.modelbus in der equinox shell kannst du rausfinden wer das package exportiert. tut dies keiner, kommt eine liste aller packages

Ansonsten schau doch einfach nach wer das package tudresden/ocl20/pivot/modelbus/ exportiert.
Die Dependencies von dem Zeug hast du hoffentlich
Steht in der Manifest. Dass solltest du a) haben und b) mit starten

und schau mal dass alle bundles im state active sind. Wenn nicht starte sie mal von hand, da wird ggf. ein fehler kommen.
 
Eclipse startet alle Bundles automatisch wenn benötigt, die Class Not Found Exception sollte also nichts mit dem Lazy State zu tun haben. Hast du das Bundle das dieses Package exportiert explizit als Required Bundle eingetragen, oder der Liste der imported Packages hinzugefügt? Meistens entsteht dieser Fehler wenn man manuell etwas im Java Build Path geändert hat (das ist bei plugin Projekten nicht erlaubt).
 

Neue Themen


Zurück
Oben