Найдите зависимые пакеты в Eclipse во время выполнения

Как пакет Eclipse (например, в коде активатора) может найти зависимые экземпляры пакета во время выполнения? Я хотел бы найти пакеты, которые Eclipse выбрал для удовлетворения требований зависимости, я не хочу сам интерпретировать манифест.

Пример: я хотел бы найти все ресурсы с именем «marker.txt» во всех пакетах, от которых зависит мой текущий пакет. Также транзитивные зависимости. Для этого мне нужно иметь возможность найти все эти пакеты для начала.


person Bruno Ranschaert    schedule 11.11.2010    source источник


Ответы (3)


Не существует простого способа определить зависимость. Лучший способ — пройти через интерфейс PackageAdmin. См. спецификацию OSGi для PackageAdmin и getImportingBundles, в частности: http://www.osgi.org/javadoc/r4v42/org/osgi/service/packageadmin/ExportedPackage.html#getImportingBundles%28%29

Вам необходимо определить для всех установленных пакетов, какой из них экспортирует один или несколько пакетов, которые импортирует ваш пакет. Самый простой способ добиться этого — вызвать PackageAdmin.getExportedPackages(Bundle bundle) с параметром bundles = null. Это возвращает массив всех экспортированных пакетов. Затем вам нужно перебрать этот массив и вызвать ExportPackage.getImportingBundles().

person Andreas Kraft    schedule 14.11.2010

См. мой ответ на этот вопрос. 4.3 будет иметь новый API связывания пакетов, который позволит делать подобные вещи.

person Holger Hoffstätte    schedule 11.11.2010

Вы можете открыть консоль OSGi и выполнить следующие команды:

ss

К списку пакетов, включая числовой идентификатор

bundle <id>

чтобы получить больше информации, включая зависимости.

Вы также должны попробовать

help

чтобы получить больше команд

person ctron    schedule 11.11.2010
comment
Он хочет сделать это программно. - person Holger Hoffstätte; 11.11.2010