我试图在运行时从任意文件夹加载OSGi Bundle,以便在我的Eclipse RCP应用程序中使用它们。到目前为止,我已完成以下步骤以实现该目标:


创建一个新的插件
从插件激活器获取BundleContext
通过BundleContext的install()方法安装一个Bundle
通过start()方法启动获取的Bundle


完成这些步骤后,Bundle的状态为ACTIVE,可以通过任何BundleContext进行检索。我的问题是无法通过PluginRegistry.getAllModels()检索捆绑包。显然,PluginRegistry并未列出BundleContext中的更改。我需要找到一种在PluginRegistry中注册我的捆绑软件的方法。这很重要,因为PluginRegistry已被现有的软件部件使用,例如清单编辑器。

PluginRegistry没有注册Bundles的方法。有没有一种方法可以将它们添加到注册表中?

最佳答案

PluginRegistry类是支持PDE的开发时间类。这是否意味着您的RCP应用程序包括PDE,并且已(部分)用于插件开发?如果是这样,那么您现在就需要解决PDE可以工作的问题(这是我不太了解的事情)。我建议看一下org.eclipse.pde.runtime插件中的类(而不是内部类)。您应该能够使用调试器,并查看代码如何向PDE运行时添加插件。如果对此有其他疑问,请使用Eclipse网站上的PDE新闻组。

如果您的RCP应用程序不包括插件开发,那么就不需要在运行时使用PluginRegistry,因此您的问题让我感到困惑。也许您可以详细说明?

09-30 17:57