How do I convert an existing jar file into an OSGi bundle?
Here's a very simple way of turning an existing jar file in an OSGi bundle, while keeping control on exported packages.
The example creates an OSGi bundle from the attached junit-4.4.jar.
Note: The method below only works in a scenario where the jar file has no dependencies on other external jar files.
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
Bundle-ClassPathheader is set to allow embedding the original jar as is. Make sure its value matches the filename of the jar that you are going to embed in the bundle.
Export-Packageis a list of packages contained in the jar that you would like to make available to other bundles running in the OSGi Container.
jar cvfm junit-4.4-bundle.jar manifest.txt junit-4.4.jar
manifest.txtis the name of the manifest file created above.
Export-Packageabove, using the classes of the embedded junit-4.4.jar.
All OSGi Containers