I am trying to create an OSGi service that wraps another jar. I added the jar to the project, the classpath and the binary build. I registered the service in the Activator but when the consuming bundle calls the service I get a java.lang.NoClassDefFoundError on the wrapper jar. Does anyone have any idea what I am doing wrong here?
Thanks in advance.
Are you exporting the packages that are required by the consumer, as well as all those that the implementation requires. The consumer will need to import everything that will be referenced.
As a side note, creating a bundle this way doesn’t work well in Eclipse for development (works fine for runtime). If you try to reference a class or interface in the jar from another OSGi project, the IDE won’t resolve anything since it cannot ‘see’ the files in the jar. The jar has to be expanded within the bundle for everything to be visible (within the IDE). Eclipse automagically creates the appropriate classpath references based on the imports and exports for build purposes. Without the jar file in the bundle, you will have to explicitly maintain this classpath.