在运行时列出eclipse安装的插件

时间:2009-06-04 10:15:15

标签: eclipse plugins

这显然应该很容易做到......

如何在运行时检索已安装插件的列表?看不到一个明显的方法,Platform.getBundle()需要一个特定的插件名称。

这可能是出于某种安全原因的限制吗?

3 个答案:

答案 0 :(得分:12)

来自here

BundleContext类有getBundles()方法,可返回所有已安装的包。

当您的捆绑包被激活BundleContext时,您会获得BundleActivator.start(BundleContext))的实例。

例如,您可以使用它来获取一些Bundle version number

http://t-templier.developpez.com/tutoriel/java/osgi/osgi1/images/architecture-osgi-haut-niveau.png

捆绑之间的交互是通过两种互补机制完成的:包导出/导入和服务注册查找工具。

http://sfelix.gforge.inria.fr/osgi-security/images/osgi/osgi_interoperability.png

服务的发布和查找是通过每个捆绑包在启动时收到的BundleContext参考执行的。
在发布过程中,广告包通过发布它正在实现的Java接口来注册服务,并提供实现此接口的类。 查找由客户端包执行,客户端包从BundleContext获取服务并将其用作标准Java对象。

答案 1 :(得分:4)

如果您希望在代码中写下此内容,请参阅VonC的回答。

如果你只是想要一个这样做的视图,那么eclipse中已有一个:Window-> Show View-> Other ...-> PDE Runtime->插件注册表。这会显示插件,扩展,依赖关系以及提供扩展的人员。

答案 2 :(得分:2)

使用以下代码获取RCP中安装的插件列表

BundleContext ctx = FrameworkUtil.getBundle(your/Class/Name.class).getBundleContext(); 
Bundle[] bundles = ctx.getBundles();