2010-11-11 5 views
5

Wie kann ein Eclipse-Bundle (zB innerhalb des Aktivator-Codes) zur Laufzeit die abhängigen Bundle-Instanzen finden? Ich möchte die Bündel finden, die Eclipse gewählt hat, um die Abhängigkeitsanforderungen zu erfüllen, ich möchte das Manifest nicht selbst interpretieren.Finden Sie die abhängigen Bundles in Eclipse zur Laufzeit

Ein Beispiel: Ich möchte alle Ressourcen namens "marker.txt" in allen Bundles finden, von denen mein aktuelles Bündel abhängt. Auch die transitiven Abhängigkeiten. Um dies zu erreichen, muss ich in der Lage sein, all diese Bündel zu finden.

Antwort

4

Es gibt keine einfache Möglichkeit, die Abhängigkeit zu bestimmen. Der beste Weg ist, die PackageAdmin-Schnittstelle zu durchlaufen. Beachten Sie insbesondere die OSGi-Spezifikation für PackageAdmin und getImportingBundles: http://www.osgi.org/javadoc/r4v42/org/osgi/service/packageadmin/ExportedPackage.html#getImportingBundles()

Sie müssen für alle installierten Bundles ermitteln, welche Pakete exportiert werden, die Ihr Bundle importiert. Der einfachste Weg, dies zu erreichen, ist der Aufruf PackageAdmin.getExportedPackages (Bundle-Bundle) mit Bundles = null. Dies gibt ein Array aller exportierten Pakete zurück. Sie müssen dann dieses Array iterieren und ExportPackage.getImportingBundles() aufrufen.

0

Sie können eine OSGi-Konsole öffnen, und geben Sie die folgenden Befehle:

ss 

Zur Liste der Pakete, einschließlich der numerischen ID

bundle <id> 

, um mehr Informationen zu erhalten, einschließlich Abhängigkeiten.

Sie sollten auch versuchen,

help 

mehr Befehle

+1

Er möchte dies programmgesteuert tun. –

1

Bitte lesen Sie meine Antwort auf this question zu bekommen. 4.3 wird eine neue Bündelverdrahtungs-API haben, die solche Dinge erlaubt.

Verwandte Themen