Osgi 如何在Equinox 3.10及以后的版本中获取所有已加载的捆绑包
我希望以编程方式检索已加载的所有捆绑包。在旧版本中,我们以这种方式使用它:Osgi 如何在Equinox 3.10及以后的版本中获取所有已加载的捆绑包,osgi,equinox,osgi-bundle,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.intern
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中检索所有加载的bundle?从bundle中,您可以实现BundleActivator接口,并在清单中将您的类标记为“BundleActivator:my.ClassName” 或者,如果不可能,可以使用FrameworkUtil.getBundle(this.getClass()).getBundleContext() 另见这个问题: 然后使用bundleContext.getBundles()
这些方法应该适用于任何OSGi框架。您是从OSGi外部还是从捆绑包中进行此操作?我正在尝试从另一个捆绑包中进行此操作。您真正需要的似乎是获得OSGi捆绑包文本,而之前您使用了一种非常奇怪的方法来获得它。正确的方法是实现Bundle激活器。