Список установленных плагинов Eclipse во время выполнения - PullRequest
15 голосов
/ 04 июня 2009

Вот кое-что очевидное, что должно быть легко сделать ...

Как получить список установленных плагинов во время выполнения? Не вижу очевидного способа сделать это, Platform.getBundle () требует определенного имени плагина.

Возможно, это ограничение по какой-то причине безопасности?

Ответы [ 3 ]

12 голосов
/ 04 июня 2009

С здесь :

Класс BundleContext имеет метод getBundles (), который возвращает все установленные пакеты.

Вы получаете экземпляр BundleContext, когда активирован ваш пакет BundleActivator.start(BundleContext)).

Вы можете использовать его, например, для получения номера версии пакета .

http://t-templier.developpez.com/tutoriel/java/osgi/osgi1/images/architecture-osgi-haut-niveau.png

Взаимодействие между пакетами осуществляется через два взаимодополняющих механизма: экспорт / импорт пакета и средство поиска регистрации службы.

http://sfelix.gforge.inria.fr/osgi-security/images/osgi/osgi_interoperability.png

Публикация и поиск сервисов выполняются с помощью BundleContext ссылки , которую каждый пакет получает во время запуска.
В процессе публикации рекламные пакеты регистрируют сервис, публикуя реализуемый им интерфейс Java и предоставляя класс, реализующий этот интерфейс.
Поиск выполняется клиентским пакетом, который получает сервис от BundleContext и использует его как стандартный объект Java.

4 голосов
/ 04 июня 2009

Если вы хотите написать это в своем коде, см. Ответ VonC.

Если вам просто нужно представление, которое делает это, в eclipse уже есть: Window-> Show View-> Other ...-> PDE Runtime-> Plugin Registry. Здесь отображаются плагины, их расширения, зависимости и кто предоставляет расширения.

2 голосов
/ 17 января 2013

Используйте следующий код, чтобы получить список плагинов, установленных в вашем RCP

BundleContext ctx = FrameworkUtil.getBundle(your/Class/Name.class).getBundleContext(); 
Bundle[] bundles = ctx.getBundles();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...