由于 icu4j,无法 运行 需要 "org.eclipse.pde.core" 的 OSGi 测试

Can not run OSGi tests requiring "org.eclipse.pde.core" because of icu4j

我正在尝试 运行 使用来自 bndaQute.bnd.gradle.TestOSGi 任务进行一些测试。

我的图书馆需要 org.eclipse.pde.core

Resolution failed. Capabilities satisfying the following requirements could not be found:
    [<<INITIAL>>]
      ⇒ osgi.identity: (osgi.identity=org.eclipse.pde.core)
          ⇒ [org.eclipse.pde.core version=3.13.200.v20191202-2135]
              ⇒ osgi.wiring.bundle: (&(osgi.wiring.bundle=org.eclipse.team.core)(bundle-version>=3.2.0)(!(bundle-version>=4.0.0)))
                  ⇒ [org.eclipse.team.core version=3.8.800.v20191122-2107]
                      ⇒ osgi.wiring.bundle: (&(osgi.wiring.bundle=org.eclipse.compare.core)(bundle-version>=3.5.200)(!(bundle-version>=4.0.0)))
                          ⇒ [org.eclipse.compare.core version=3.6.700.v20191122-2107]
                              ⇒ osgi.wiring.package: (&(osgi.wiring.package=com.ibm.icu.text)(version>=3.6.1))

我有 'com.ibm.icu:icu4j:64.2' 作为依赖项,我什至表示我想启动捆绑包 com.ibm.icu

-runrequires: \
    bnd.identity;id='${project.archivesBaseName}',\
    bnd.identity;id='junit-jupiter-engine',\
    bnd.identity;id='junit-platform-launcher',\
    bnd.identity;id='org.eclipse.pde.core',\
    bnd.identity;id='com.ibm.icu',\

可以在这里找到最小的复制器项目:pde-run project on GitHub


我查看了 icu4j.jar 里面的 MANIFEST 文件。

我看到以下内容:

Bundle-ManifestVersion: 2
Bundle-Name: ICU4J
Bundle-Description: International Components for Unicode for Java
Bundle-SymbolicName: com.ibm.icu
Bundle-Version: 64.2

Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Main-Class: com.ibm.icu.util.VersionInfo
Export-Package: com.ibm.icu.lang,com.ibm.icu.math,com.ibm.icu.number,com.ibm.icu.text,com.ibm.icu.util
Automatic-Module-Name: com.ibm.icu

因此 com.ibm.icu.text 由该包导出。

有没有办法了解正在发生的事情?

我认为 Bundle-RequiredExecutionEnvironment 条目可能会阻止启动包(我正在使用 Java 8 进行测试)。如果是这种情况,我该怎么做才能解决我的问题?


未满足的要求是包裹 com.ibm.icu.textversion>=3.6.1。但是,您显示的 icu4j.jar 副本的导出是未版本化的,这意味着它具有隐式版本 0.0.0.

遗憾的是 0.0.0 不大于或等于 3.6.1,因此该捆绑包不满足 org.eclipse.compare.core 捆绑包的要求。

我认为您需要来自 Eclipse Orbit 的正确 com.ibm.icu 包。例如,参见 https://download.eclipse.org/oomph/archive/reports/download.eclipse.org/releases/2021-09/index/com.ibm.icu_67.1.0.v20200706-1749.html