Найти зависимые пакеты в 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
чтобы получить больше команд