Список подключаемых модулей eclipse во время выполнения

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

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

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

Ответы

Ответ 1

Из здесь:

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

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

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

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

Ответ 2

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

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

Ответ 3

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

BundleContext ctx = FrameworkUtil.getBundle(your/Class/Name.class).getBundleContext(); 
Bundle[] bundles = ctx.getBundles();