【问题标题】:Preprocessing step to load update bundles (plugins) when starting an Eclipse RCP application启动 Eclipse RCP 应用程序时加载更新包(插件)的预处理步骤
【发布时间】:2013-08-11 13:57:49
【问题描述】:

我想通过以下功能增强我的 Eclipse RCP 应用程序:启动应用程序时,引导机制应检查文件夹中是否有可用的更新包/插件,如果有,则通过 BundleContext 安装它们。但是,问题是这意味着包含我的 IApplication 实现的包也可以更新。所以预处理步骤必须在启动 OSGi 之后,但在启动应用程序之前。是否有可能做到这一点? (在启动应用程序之前覆盖旧捆绑包等其他方法是不可行的)。

【问题讨论】:

    标签: java osgi eclipse-rcp


    【解决方案1】:

    这就是 OSGi 入门级别的设计目的。您可能还想查看 Apache Felix Fileinstall(在 Eclipse 中运行良好)。

    【讨论】:

    • 谢谢彼得!但是,如果我启动 Eclipse 应用程序,我的引导加载程序包的自动启动选项将被忽略。 (从不调用引导程序包的 BundleActivator。)如果我将应用程序重新设计为 OSGi 框架应用程序,一切正常,但我无法使用 Eclipse RCP 应用程序的便利性(例如,内置的闪屏支持)。
    • 在非常低的启动级别上从捆绑包中执行启动画面。我不知道 eclipse 启动器是如何工作的,但如果你不能设置启动级别,我会感到惊讶。对于自动启动,配置文件中有一个选项。您可能还想查看 bnd(tools)。我猜 bndtools 也是一个 RCP 应用程序,但它是一个真正的 OSGi 框架应用程序。
    【解决方案2】:

    最后,我最终使用了Eclipse adaptor hook。使用这种方法,我可以在加载我的应用程序的默认包之前加载所需的包。正如我对彼得的回答所评论的那样,Eclipse RCP 应用程序似乎忽略了 OSGi 启动级别(如果我错了,请纠正我)。同样为 org.eclipse.ui.startup eclipse 扩展点创建启动扩展也无济于事,因为它触发得太晚了。如果您对 Eclipse 适配器挂钩方法感兴趣,可以在 this page 上找到一个很好的教程。

    【讨论】:

      猜你喜欢
      • 2019-02-12
      • 1970-01-01
      • 2013-09-14
      • 2011-12-22
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      相关资源
      最近更新 更多