如何在Equinox 3.10及更高版本中获取所有已加载的包

时间:2015-04-08 07:15:14

标签: osgi equinox osgi-bundle

我想以编程方式检索所有已加载的包。在旧版本中,我们以这种方式使用它:

    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中检索所有已加载的包?

1 个答案:

答案 0 :(得分:2)

从bundle中你可以实现BundleActivator接口,并在Manifest中将你的类标记为“BundleActivator:my.ClassName”。

如果不可能,您可以使用FrameworkUtil.getBundle(this.getClass())。getBundleContext()。

另请参阅此问题:Best technique for getting the OSGi bundle context?

然后使用bundleContext.getBundles();

这些方法适用于任何OSGi框架。