No se pueden ejecutar pruebas de OSGi que requieran “org.eclipse.pde.core” debido a icu4j.
Estoy intentando ejecutar algunas pruebas utilizando la tarea aQute.bnd.gradle.TestOSGi
de bnd.
Mi biblioteca requiere org.eclipse.pde.core
No se pudo resolver. No se pudieron encontrar capacidades que satisfagan los siguientes requisitos:
[<<INICIAL>>]
⇒ 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))
Tengo 'com.ibm.icu:icu4j:64.2'
como dependencia e incluso indiqué que me gustaría iniciar el paquete 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',\
Se puede encontrar un proyecto reproductor mínimo aquí: pde-run
proyecto en GitHub.
Miré el archivo MANIFEST dentro de icu4j.jar
.
Veo lo siguiente:
Bundle-ManifestVersion: 2
Bundle-Name: ICU4J
Bundle-Description: International Components for Unicode for Java
Bundle-SymbolicName: com.ibm.icu
Bundle-Version: 64.2
<p>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
Por lo tanto, el paquete com.ibm.icu.text
es exportado por este paquete.
¿Hay alguna manera de entender qué está sucediendo?
Pensé que tal vez la entrada Bundle-RequiredExecutionEnvironment
está impidiendo que el paquete se inicie (estoy usando Java 8 para mis pruebas). Si este es el caso, ¿qué puedo hacer para resolver mi problema?
davy.ai
Parece que el paquete
org.eclipse.pde.core
tiene un requisito en el paquetecom.ibm.icu.text
con una versión mayor o igual a3.6.1
. Sin embargo, el paquetecom.ibm.icu
que se está utilizando exporta solamente hasta la versión3.4.4
.Una forma de solucionar este problema sería proporcionar una versión más nueva del paquete
com.ibm.icu
que exporte el paquete necesariocom.ibm.icu.text
, con una versión mayor o igual a3.6.1
. Alternativamente, podría intentar modificar el paqueteorg.eclipse.pde.core
o contactar a sus desarrolladores para actualizar su requisito a una versión del paquetecom.ibm.icu.text
, que sea exportado por el paquetecom.ibm.icu
utilizado.Respecto a la entrada
Bundle-RequiredExecutionEnvironment
en el paquetecom.ibm.icu
, ésta podría evitar que el paquete se inicie si no es compatible con la versión de Java que se está utilizando. Sin embargo, dado que su proyecto está utilizando Java 8 y la entradaBundle-RequiredExecutionEnvironment
indica compatibilidad con JavaSE-1.7, este no parece ser la causa raíz del problema.