2015-04-08 3 views
1

Я хочу программно получить все загруженные пакеты. В старой версии мы использовали его таким образом:Как получить все загруженные пакеты в Equinox 3.10 и далее

Field osgiField = EclipseStarter.class.getDeclaredField("osgi"); 
    osgiField.setAccessible(true); 
    final org.eclipse.osgi.framework.internal.core.OSGi osgi = 
      (org.eclipse.osgi.framework.internal.core.OSGi) osgiField.get(null); 
    osgi.getBundleContext().getBundles(); 

Как извлечь все загруженные пакеты в последней OSGi?

+0

Вы пытаетесь сделать это со стороны OSGi или из комплекта? –

+0

Я пытаюсь сделать это из другого пакета – bhar

+1

Что вам действительно нужно, так это овладеть OSGi BundleContext, и ранее вы использовали * очень странный хак, чтобы овладеть им. Правильный способ сделать это - реализовать Активатор Bundle. –

ответ

2

Из комплекта вы можете либо реализовать интерфейс BundleActivator, либо пометить свой класс в манифесте как «BundleActivator: my.ClassName».

Или, если это невозможно, вы можете использовать FrameworkUtil.getBundle (this.getClass()). GetBundleContext().

Смотрите также вопрос: Best technique for getting the OSGi bundle context?

Затем используйте bundleContext.getBundles();

Эти подходы должны работать с любой инфраструктурой OSGi.

Смежные вопросы