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

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

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

3 ответа

Решение

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

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

Пожалуйста, смотрите мой ответ на этот вопрос. 4.3 будет иметь новый API-интерфейс для подключения, который позволит такие вещи.

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

ss

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

bundle <id>

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

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

help

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

Другие вопросы по тегам