Pregunta

¿Cómo puedo convertir un archivo jar existente en un paquete OSGi?

Respuesta, Resolución

Aquí tiene una forma muy sencilla de convertir un archivo jar existente en un paquete OSGi, manteniendo al mismo tiempo el control sobre los paquetes exportados.

El ejemplo crea un paquete OSGi a partir del junit-4.4.jar adjunto.

Nota: El método siguiente solo funciona en un escenario en el que el archivo jar no tiene dependencias con otros archivos jar externos.

  1. Comience por crear un archivo de manifiesto .jar:
    Manifest-Version: 1.0 Created-By: myself Bundle-ManifestVersion: 2 Bundle-Name: JUnit 4.4 bundle Bundle-Description: Package junit 4.4 in an OSGi bundle Bundle-Version: 4.4.0 Bundle-ClassPath: .,junit-4.4.jar Bundle-SymbolicName: org.junit.framework Export-Package: junit.framework,junit.extensions,org.junit.runner,org.junit,junit.textui 

    • El encabezado Bundle-ClassPath está configurado para permitir incrustar el archivo jar original tal como está. Asegúrese de que su valor coincide con el nombre de archivo jar que va a incrustar en el paquete.
    • Export-Package es una lista de paquetes contenidos en el jar que le gustaría poner a disposición de otros paquetes que se ejecutan en el contenedor de OSGi.
  2. Archivo jar
    Obtén el archivo jar, en nuestro caso de http://mirrors.ibiblio.org/pub/mirrors/maven2/junit/junit/4.4/junit-4.4.jar
  3. Cree el archivo jar ejecutando el siguiente comando:
    jar cvfm junit-4.4-bundle.jar manifest.txt junit-4.4.jar 

    Donde manifest.txt es el nombre del archivo de manifiesto creado anteriormente.

    Eso es todo: el archivo jar resultante (adjunto a esta página como ejemplo) es un paquete OSGi que exporta los paquetes listados en Export-Package, usando las clases del junit-4.4.jar incrustado.

Se aplica a:

Todos los contenedores OSGi

Descargar

Esta obra está autorizada con arreglo a la licencia de Reconocimiento-NoComercial-CompartirIgual 3.0 Unported de Creative Commons.  Los términos de Creative Commons no cubren las publicaciones en Twitter™ y Facebook.

Avisos legales   |   Política de privacidad en línea