尽管版本匹配,但未找到 OSGi 包

OSGi bundle not found despite version match

我的构建抱怨缺少依赖项:

... requires bundle org.eclipse.ui [3.106.0,4.0.0)' but it could not be found

使用的目标平台指向包含以下 JAR 的 P2 位置:org.eclipse.ui_3.106.0.v20140812-1751.jar

仍然构建失败并引发以下两个问题:

  1. 我以为 3.106.0.v20140812-1751 会在 [3.106.0,4.0.0) 范围内,这不是真的吗?
  2. OSGi 如何处理版本的第四部分?如果 3.106.0 是有效版本,那么 OSGi 如何理解后缀 .v20140812-1751

link 对 OSGi 版本控制的良好解释也将不胜感激。

I thought 3.106.0.v20140812-1751 would be in the range [3.106.0,4.0.0), is that not true?

是的,这是真的。

How does OSGi handle the fourth part of a version? If 3.106.0 is a valid version, then how is the suffix .v20140812-1751 understood by OSGi?

第四部分与其他部分一样只是一个片段,只是它是按字母数字排序而不是纯粹按数字排序。具体算法是 String.compare(),因此您应该阅读该方法的标准 JavaDocs 以获得完整的详细信息。此段称为 "qualifier"

在版本 3.106.0.v20140812-1751 中,限定符是 v20140812-1751。在版本 3.106.0 中,限定符是空字符串。 String.compare() 的 JavaDocs 将确认,任何非空字符串都排在空字符串之后。