【问题标题】:Eclipse bundle version tolerancesEclipse 包版本容差
【发布时间】:2012-06-28 10:44:32
【问题描述】:

我正在尝试使用第三方工具(即 IBM 安装管理器)将 Eclipse 产品安装到现有的 Eclipse 安装中,但它失败并出现多个此类错误

CRIMA1054E:将捆绑包“org.eclipse.equinox.p2.repository.tools_2.0.1.R36x_v20100823”安装到此现有 Eclipse 安装不满足现有 Eclipse 安装的“[2.0.100,3.0.0)”版本容差捆绑“org.eclipse.pde.ui”

很遗憾,我无法透露有关受影响产品的任何细节,所以我想把这个问题变成一个更笼统的问题。

在对 Eclipse 平台进行了一些研究之后,我的理解是它是 OSGi 规范的关键特性之一,应该能够将同一个包(≘ 插件?)的多个版本安装到同一个环境中。如果包 org.eclipse.pde.ui 已经存在,我假设它所需的 [...].p2.repository.tools 版本也已经存在可用。

我的问题:为什么只将另一个版本的插件添加到环境中会成为问题?我对 Eclipse 和 OSGi 有什么误解吗?

附带问题:版本2.0.1.R36[...]不应该在[2.0.100,3.0.0)内 em> 无论如何?但这并没有真正影响我的主要问题,因为我还有其他明显超出容忍范围的示例。

一些初步的想法和理论

  1. 尽管 Eclipse 允许插件的并行版本,但某些插件仍会与自身的其他版本发生冲突。不过,我预计会有更多错误,例如“[...].repository.tools_x 与现有捆绑包 org.eclipse.pde.ui 所需的 [...].repository.tools_y 不兼容”

  2. 安装不是被 Eclipse 阻止,而是被 IBM Installation Manager 阻止。它可能会进行一些内部依赖检查,但懒得考虑并行捆绑版本安装。

再次关于该特定产品:不幸的是,该产品无法通过常规 Eclipse 软件安装机制获得。我还想避免手动将其放入我的 Eclipse 中,因为我依赖于定期更新,而这些更新仅通过 IBM Installation Manager 提供。

【问题讨论】:

    标签: eclipse eclipse-plugin osgi


    【解决方案1】:

    任何贡献 UI 的 Eclipse 插件都必须将单例指令设置为 true。这意味着框架中只能有一个具有该符号名称的捆绑包,请参阅http://wiki.osgi.org/wiki/Bundle-SymbolicName 了解更多信息。

    我检查了我的 Eclipse (3.8) 版本中的 org.eclipse.equinox.p2.repository.tools 包,我可以看到它确实有 singleton=true。

    您说:“2.0.1.R36[...] 在 [2.0.100,3.0.0) 内”

    事实并非如此,因为 2.0.1 是

    【讨论】:

    • 谢谢。这样就搞清楚了。我想我将不得不使用旧版本的 Eclipse。
    猜你喜欢
    • 1970-01-01
    • 2015-12-13
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多