Frage
Wie konvertiere ich eine vorhandene JAR-Datei in ein OSGi-Bundle?
Antwort, Auflösung
Hier ist eine sehr einfache Möglichkeit, eine vorhandene JAR-Datei in ein OSGi-Bundle umzuwandeln, während Sie die Kontrolle über die exportierten Pakete behalten.
Das Beispiel erstellt ein OSGi-Bundle aus dem angehängten Junit-4.4.jar.
Hinweis: Die folgende Methode funktioniert nur in einem Szenario, in dem die JAR-Datei keine Abhängigkeiten zu anderen externen JAR-Dateien aufweist.
- Beginnen Sie mit dem Erstellen einer Manifestdatei für das 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
- Die
Bundle-ClassPath
Kopfzeile ist so eingestellt, dass sie das Original-JAR so, wie es ist, einbetten kann. Stellen Sie sicher, dass der Wert mit dem Dateinamen des JAR übereinstimmt, das Sie in das Bundle einbetten möchten. Export-Package
ist eine Liste von Paketen, die im JAR enthalten sind und die Sie anderen Bundles, welche im OSGi-Container laufen, zur Verfügung stellen möchten.
- Die
- JAR-Datei.
Holen Sie sich die JAR-Datei, in unserem Fall von http://mirrors.ibiblio.org/pub/mirrors/maven2/junit/junit/4.4/junit-4.4.jar. - Erstellen Sie die Bundle-JAR-Datei, indem Sie den folgenden Befehl ausführen:
jar cvfm junit-4.4-bundle.jar manifest.txt junit-4.4.jar
Dabei istmanifest.txt
der Name der oben erstellten Manifestdatei.
Das war es auch schon - die resultierende JAR-Datei (als Beispiel angehängt an diese Seite) ist ein OSGi-Bundle, das die unterExport-Package
oben aufgeführten Pakete exportiert unter der Verwendung der Klassen der eingebetteten junit-4.4.jar.
Gilt für
Alle OSGi-Container.
Herunterladen