由于 icu4j,无法运行需要“org.eclipse.pde.core”的 OSGi 测试
Posted
技术标签:
【中文标题】由于 icu4j,无法运行需要“org.eclipse.pde.core”的 OSGi 测试【英文标题】:Can not run OSGi tests requiring "org.eclipse.pde.core" because of icu4j 【发布时间】:2022-01-07 02:42:04 【问题描述】:我正在尝试使用来自bnd 的aQute.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 进行测试)。如果是这种情况,我该怎么做才能解决我的问题?
【问题讨论】:
【参考方案1】:未满足的要求是将com.ibm.icu.text
与version>=3.6.1
打包在一起。但是,您显示的 icu4j.jar 副本的导出是未版本化的,这意味着它的隐式版本为 0.0.0。
很遗憾,0.0.0 不大于或等于 3.6.1,因此此捆绑包不满足 org.eclipse.compare.core
捆绑包的要求。
【讨论】:
好的,Maven Central (com.ibm.icu:icu4j:64.2
) 上的 icu4j jar 与您可以从 P2 更新站点 com.ibm.icu_64.2.0.v20190507-1337.jar
下载的不同。 OSGi 元数据不同。【参考方案2】:
我认为您需要来自 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。
【讨论】:
绝对...... OSGi 元数据在 2 个地方不一样。以上是关于由于 icu4j,无法运行需要“org.eclipse.pde.core”的 OSGi 测试的主要内容,如果未能解决你的问题,请参考以下文章
机械硬盘显示无法访问由于IO设备错误,无法运行此项请求的资料寻回法子