es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el paquete org.eclipse.pde.core tiene un requisito en el paquete com.ibm.icu.text con una versión mayor o igual a 3.6.1. Sin embargo, el paquete com.ibm.icu que se está utilizando exporta solamente hasta la versión 3.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 necesario com.ibm.icu.text, con una versión mayor o igual a 3.6.1. Alternativamente, podría intentar modificar el paquete org.eclipse.pde.core o contactar a sus desarrolladores para actualizar su requisito a una versión del paquete com.ibm.icu.text, que sea exportado por el paquete com.ibm.icu utilizado.

    Respecto a la entrada Bundle-RequiredExecutionEnvironment en el paquete com.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 entrada Bundle-RequiredExecutionEnvironment indica compatibilidad con JavaSE-1.7, este no parece ser la causa raíz del problema.

Comments are closed.