Как пакет Eclipse (например, в коде активатора) может найти зависимые экземпляры пакета во время выполнения? Я хотел бы найти пакеты, которые Eclipse выбрал для удовлетворения требований зависимости, я не хочу интерпретировать манифест сам.
Пример: я хотел бы найти все ресурсы с именем "marker.txt" во всех пакетах, от которых зависит мой текущий пакет. Также переходные зависимости. Для этого мне нужно найти все эти связки для начала.
Нет простого способа определить зависимость. Лучший способ - пройти через интерфейс PackageAdmin. См. Спецификацию OSGi для PackageAdmin и getImportingBundles, в частности: http://www.osgi.org/javadoc/r4v42/org/osgi/service/packageadmin/ExportedPackage.html#getImportingBundles()
Необходимо определить для всех установленных пакетов, какой из них экспортирует один или несколько пакетов, которые импортирует ваш пакет. Самый простой способ добиться этого - вызвать PackageAdmin.getExportedPackages (Bundle bundle) с bundles = null . Это возвращает массив всех экспортируемых пакетов. Затем вам нужно перебрать этот массив и вызвать ExportPackage.getImportingBundles () .
Пожалуйста, смотрите мой ответ на этот вопрос .4.3 будет иметь новый API-интерфейс для проводки в комплекте, который позволит такие вещи.
Вы можете открыть консоль OSGi и выполнить следующие команды:
ss
К списку пакетов, включая числовой идентификатор
bundle <id>
для получения дополнительной информации, включая зависимости.
Вы также должны попробовать
help
чтобы получить больше команд