我的插件所需的捆绑包不活动

时间:2013-05-23 17:20:17

标签: eclipse-plugin osgi eclipse-rcp equinox

这篇文章涵盖Eclipse早期开始: How to ensure eclipse plugin has required bundles available?

这篇文章介绍了在通过p2更新安装之后为“早期启动”配置插件:Require-Bundle and Import-Package versus feature.xml requires

这个wiki条目涵盖Eclipse懒惰的开始: http://wiki.eclipse.org/Lazy_Start_Bundles

在我的情况下,我正在加载我的插件包所需的包(Apache Wink),我需要确保在调用我的插件时它是ACTIVE。它是不够的,我的意思是,我不需要导入任何我需要它运行的包,所以我的插件可以与它进行HTTP通信。我正在考虑两个解决方案,并希望得到任何反馈,或欢迎我未考虑的建议:

  1. 将其配置为早期启动,以便在Eclipse启动时启动(通过扩展)。由于我不是Wink Bundle的作者,我正在考虑添加一个实现IStartup类的片段。早期开始延期通常不赞成,所以也许:
  2. 在我的Activator中,搜索捆绑包并激活它(如果尚未激活)。问题?

1 个答案:

答案 0 :(得分:3)

根据您的描述,听起来您正在创建人们将安装到现有Eclipse实例中的插件。此外,您无法控制Apache Wink插件的安装方式。

这意味着#1会很棘手,因为这样做的方法是添加一个p2.inf文件,并在其中添加一个具有正确启动级别的自动启动属性。如果你自己创建和捆绑apache wink插件,那么这就是我推荐的方式,但是既然你没有,我会选择#2。

您需要做的就是激活器中的所有内容:

Platform.getBundle("org.apache.foobar.wink").start();

简单,但有几点需要注意:

  1. 添加空检查以防万一未安装捆绑包。
  2. 如果wink bundle需要很长时间才能启动和初始化,您可能需要使用Job在单独的线程中启动wink bundle。但是,您必须确保在使用当前捆绑包之前等待激活完成。