Eclipse plugin 我的插件所需的捆绑包未激活

Eclipse plugin 我的插件所需的捆绑包未激活,eclipse-plugin,osgi,eclipse-rcp,equinox,Eclipse Plugin,Osgi,Eclipse Rcp,Equinox,这篇文章介绍了Eclipse的早期启动: 这篇文章介绍了如何在通过p2更新安装后为“早期启动”配置插件: 此wiki条目涵盖Eclipse延迟启动: 在我的例子中,我正在加载插件包所需的包(ApacheWink),我需要确保在调用插件时它处于活动状态。这还不够,我的意思是,我不需要导入它的任何包,我只需要它运行,这样我的插件就可以与它进行HTTP通信。我正在考虑两种解决方案,希望您能对其中一种提供反馈,或者欢迎您提出我没有考虑过的建议: 将其配置为早期启动,以便在Eclipse启动时启动(通

这篇文章介绍了Eclipse的早期启动:

这篇文章介绍了如何在通过p2更新安装后为“早期启动”配置插件:

此wiki条目涵盖Eclipse延迟启动:

在我的例子中,我正在加载插件包所需的包(ApacheWink),我需要确保在调用插件时它处于活动状态。这还不够,我的意思是,我不需要导入它的任何包,我只需要它运行,这样我的插件就可以与它进行HTTP通信。我正在考虑两种解决方案,希望您能对其中一种提供反馈,或者欢迎您提出我没有考虑过的建议:

  • 将其配置为早期启动,以便在Eclipse启动时启动(通过扩展)。由于我不是Wink Bundle的作者,我正在考虑添加一个实现IStartup类的片段。通常不赞成提前开始延期,因此可能:
  • 在my Activator中,搜索捆绑包,如果尚未激活,则将其激活。问题

  • 从您所描述的内容来看,听起来您正在创建人们将要安装到现有Eclipse实例中的插件。此外,您无法控制如何安装ApacheWink插件

    这意味着#1将是一个棘手的问题,因为这样做的方法是添加一个p2.inf文件,并添加一个具有适当启动级别的自动启动属性。如果你是自己创建和捆绑ApacheWink插件,那么这就是我推荐的方式,但既然你不是,我就选择#2

    您只需在activator中执行以下操作:

    Platform.getBundle("org.apache.foobar.wink").start();
    
    很简单,但有几个注意事项:

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

  • 从您所描述的内容来看,听起来您正在创建人们将要安装到现有Eclipse实例中的插件。此外,您无法控制如何安装ApacheWink插件

    这意味着#1将是一个棘手的问题,因为这样做的方法是添加一个p2.inf文件,并添加一个具有适当启动级别的自动启动属性。如果你是自己创建和捆绑ApacheWink插件,那么这就是我推荐的方式,但既然你不是,我就选择#2

    您只需在activator中执行以下操作:

    Platform.getBundle("org.apache.foobar.wink").start();
    
    很简单,但有几个注意事项:

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

  • 我认为这是一个很好的建议。但我最终发现,如果我的包有一个需要wink的包,并且我的包实现了IStartup,并扩展了启动扩展,那么服务器将在OSGI启动时启动。我认为这是一个很好的建议。但我最终发现,如果我的包有一个需要wink的包,并且我的包实现了IStartup,并扩展了启动扩展,那么服务器将在OSGI启动时启动。