1

我正在尝试使用第三方工具(即 IBM Installation Manager)将 Eclipse 产品安装到现有的 Eclipse 安装中,但它失败了,并出现了一些此类错误

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

不幸的是,我无法透露受影响产品的任何细节,所以我想把它变成一个更笼统的问题。

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

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

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

一些初步的想法和理论

  1. 即使 Eclipse 允许插件的并行版本,一些插件仍然与它们自己的其他版本发生冲突。尽管如此,我还是希望出现更多错误,例如“[...].repository.tools_x 与现有捆绑包 org.eclipse.pde.ui 所需的 [...].repository.tools_y 不兼容”

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

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

4

1 回答 1

3

任何提供 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 < 2.0.100。

于 2012-06-28T11:15:35.137 回答