2009-06-04 3 views
15

Hier ist etwas offensichtlich, das sollte einfach zu tun sein ...Liste Eclipse installierte Plugins zur Laufzeit

Wie kann ich eine Liste der installierten Plugins zur Laufzeit abrufen? Kann keine offensichtliche Möglichkeit dafür sehen platform.getBundle() benötigt einen bestimmten Plugin-Namen.

Ist das vielleicht eine Einschränkung aus Sicherheitsgründen?

Antwort

12

Von here:

Die BundleContext Klasse eine getBundles() Methode hat, die alle installierten Pakete zurückgibt.

Sie erhalten eine Instanz der BundleContext, wenn Ihr Bundle aktiviert ist BundleActivator.start(BundleContext)).

Sie können es verwenden, um zum Beispiel einige Bundle version number zu bekommen.

http://t-templier.developpez.com/tutoriel/java/osgi/osgi1/images/architecture-osgi-haut-niveau.png

Die Wechselwirkungen zwischen den Bündeln werden durch zwei komplementäre Mechanismen erfolgen: Der Paket-Export/Import und die Registrierung lookup Facility Service.

http://sfelix.gforge.inria.fr/osgi-security/images/osgi/osgi_interoperability.png

Die Veröffentlichung und Lookup-Dienstleistungen werden durch die BundleContext Referenz durchgeführt, die jedes Bündel beim Start empfängt.
Während des Veröffentlichungsprozesses registriert das Werbebündel einen Dienst, indem es eine Java-Schnittstelle veröffentlicht, die es implementiert, und indem es eine Klasse bereitstellt, die diese Schnittstelle implementiert.
Die Suche wird vom Client-Bundle durchgeführt, das den Service von BundleContext bezieht und als Standard-Java-Objekt verwendet.

+0

Großer Dank VonC installiert zu bekommen, das ist genau das, was ich brauchte. Am Ende nutzte ich die Erweiterung Registry und fand die Plugins, nach denen ich suchte, durch eine Erweiterung, die sie alle gemeinsam hatten, aber diese Antwort ist die kanonische. Diskutieren Sie über Dienste, denn auf diese Weise entdecken die Bundles ihre Anwesenheit und ermöglichen so die Entdeckung installierter Plugins? – Bryji

+0

@Bryan: Ja, der Service-Teil war da, um der BundleContext-Verwendung ein wenig Kontext (Wortspiel nicht beabsichtigt) zu geben. – VonC

3

Wenn Sie dies in Ihrem Code schreiben möchten, lesen Sie die Antwort von VonC.

Wenn Sie nur eine Ansicht wollen, die das tut, gibt es bereits eine in eclipse: Window-> Show View-> Other ...-> PDE Runtime-> Plugin Registry. Dies zeigt Plugins, deren Erweiterungen, Abhängigkeiten und wer bietet Erweiterungen an.

2

Verwenden folgenden Code, um die Liste der Plug-in Ihrer RCP

BundleContext ctx = FrameworkUtil.getBundle(your/Class/Name.class).getBundleContext(); 
Bundle[] bundles = ctx.getBundles(); 
Verwandte Themen