Найти зависимые пакеты в Eclipse во время выполнения - PullRequest
5 голосов
/ 11 ноября 2010

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

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

Ответы [ 3 ]

4 голосов
/ 14 ноября 2010

Нет простого способа определить зависимость. Лучший способ - пройти через интерфейс 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 () .

1 голос
/ 11 ноября 2010

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

0 голосов
/ 11 ноября 2010

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

ss

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

bundle <id>

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

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

help

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

...