Eclipse PDE: программное чтение содержимого целевой платформы

В моем приложении целевая платформа настроена так, чтобы содержать некоторые из моих настраиваемых подключаемых модулей, помимо подключаемых модулей eclipse. Во время использования приложения я хочу сравнить содержимое целевой платформы с установленной папкой, которая должна содержать мои настраиваемые плагины.

Фактически, я хотел бы получить список всех пакетов на целевой платформе (плагины Eclipse + мои пользовательские плагины).

Я пробовал использовать getBundleContext () как в ResourcesPlugin, так и в PDEPlugin, но он возвращает только плагины eclipse bas, а не мои пользовательские плагины.


person Chandra Vikas    schedule 19.11.2013    source источник
comment
Вы уверены, что ваши пакеты установлены? Обычно BundleContext # getBundles () - это способ получить все установленные пакеты.   -  person isnot2bad    schedule 19.11.2013
comment
Да, мое приложение работает нормально, опираясь на этот дополнительный набор пакетов. Я хочу добавить проверку, чтобы убедиться, что они присутствуют на целевой платформе.   -  person Chandra Vikas    schedule 19.11.2013
comment
Информация о целевой платформе не будет доступна в вашем запущенном приложении. У вас будет информация только о плагинах, включенных в ваше приложение.   -  person greg-449    schedule 19.11.2013
comment
@Greg - Но поскольку я могу получить базовые плагины eclipse, разве не логично получить и другие плагины, потому что все они являются частью одного целевого определения, как в одном объекте ITargetDefinition? Я что-то там упускаю?   -  person Chandra Vikas    schedule 19.11.2013
comment
Является ли ваше приложение Eclipse RCP, которое использует рабочую область, и целевая платформа определена в этой рабочей области?   -  person greg-449    schedule 19.11.2013
comment
Да, это Eclipse RCP, использующий рабочую область, и целевая платформа была изменена в этой рабочей области.   -  person Chandra Vikas    schedule 19.11.2013


Ответы (1)


ITargetPlatformService service = PDECore.getDefault().acquireService(ITargetPlatformService.class);
            for (TargetBundle targetBundle: service.getWorkspaceTargetDefinition().getBundles()) {
//then get name of plugin via targetBundle.getBundleInfo().getSymbolicName()
}

Проблема с этим кодом заключается в том, что вы получаете предупреждение, подобное: Запрещенный доступ: тип 'PDECore' не является API (ограничение на требуемую библиотеку '... \ eclipse-rcp-photon-R-win32-x86_64 \ plugins \ org .eclipse.pde.core_3.12.0.v20180516-1159.jar ')

person Munteanu Mihai    schedule 30.09.2020