2010-11-11 23 views
5

W jaki sposób pakiet Eclipse (np. W kodzie aktywatora) może znaleźć zależne instancje pakietu w czasie wykonywania? Chciałbym znaleźć pakiety, które Eclipse wybrał w celu spełnienia wymagań dotyczących zależności, nie chcę interpretować tego manifestu osobiście.Znajdź zależne pakiety w środowisku Eclipse w środowisku wykonawczym

Przykład: Chciałbym znaleźć wszystkie zasoby o nazwie "marker.txt" we wszystkich pakietach, od których zależy mój aktualny pakiet. Również zależności przechodnie. Aby to osiągnąć, muszę znaleźć wszystkie te pakiety na początek.

Odpowiedz

4

Nie ma łatwego sposobu na określenie zależności. Najlepszym sposobem jest przejście przez interfejs PackageAdmin. Zobacz specyfikację OSGi dla PackageAdmin i getImportingBundles w szczególności: http://www.osgi.org/javadoc/r4v42/org/osgi/service/packageadmin/ExportedPackage.html#getImportingBundles()

Musisz określić dla wszystkich zainstalowanych pakietów, które eksportują jeden lub więcej pakietów importowanych przez twój pakiet. Najłatwiejszym sposobem osiągnięcia tego jest wywołanie PackageAdmin.getExportedPackages (Bundle bundle) z pakietami = null. Zwraca tablicę wszystkich wyeksportowanych pakietów. Następnie należy wykonać iterację tej tablicy i wywołać ExportPackage.getImportingBundles().

0

Można otworzyć konsolę OSGi i wydać następujące polecenia:

ss 

Do listy wiązek, w tym identyfikatorze numerycznym

bundle <id> 

Aby uzyskać więcej informacji, w tym zależności.

Należy także

help 

aby uzyskać więcej poleceń

+1

Chce to zrobić programowo. –

1

proszę zobaczyć moją odpowiedź na this question. 4.3 będzie miał nowy interfejs API, który pozwoli na takie rzeczy.

Powiązane problemy