I am currently starting with OSGi, iPOJO and iPOJO Annotations and trying to create a simple component to deploy to Felix. Unfortunately, I encounter various problems that take me an hour to solve, or which I cannot solve even after I have spent a lot of time, for example:
I want to use an existing library in my OSGi suite that we create using Maven. The library is currently not an "OSGI-ified", and we do not plan to do this in the medium term. Because of this, I want to include this library and all its dependencies in a bundle using ...:
<Embed-Dependency>*</Embed-Dependency> <Embed-Transitive>true</Embed-Transitive>
Now I have the following pom.xml file for the OSGi component:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>foo</groupId> <artifactId>samplecomponent</artifactId> <packaging>bundle</packaging> <version>0.0.1-SNAPSHOT</version> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <compilerArgument>-Xlint:all</compilerArgument> <showWarnings>true</showWarnings> <source>1.6</source> <target>1.6</target> <compilerArguments> <encoding>UTF-8</encoding> </compilerArguments> <showDeprecation>true</showDeprecation> <verbose>true</verbose> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> <version>2.3.6</version> <configuration> <instructions> <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> <Embed-Dependency>*</Embed-Dependency> <Embed-Transitive>true</Embed-Transitive> <Embed-Directory>lib</Embed-Directory> <Export-Package>*</Export-Package> <_exportcontents>*</_exportcontents> </instructions> </configuration> </plugin> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-ipojo-plugin</artifactId> <version>1.6.0</version> <executions> <execution> <goals> <goal>ipojo-bundle</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.apache.felix</groupId> <artifactId>org.apache.felix.ipojo.annotations</artifactId> <version>1.8.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>foo</groupId> <artifactId>mylibrary</artifactId> <version>1.2.3</version> <scope>compile</scope> </dependency> </dependencies> </project>
The jar file of the build file was built without any problems, but when I deploy and run the package on Apache Felix, I get the following error:
g! install file:/…/samplecomponent-0.0.1-SNAPSHOT.jar Bundle ID: 8 g! start 8 org.osgi.framework.BundleException: Unresolved constraint in bundle samplecomponent [8]: Unable to resolve 8.0: missing requirement [8.0] osgi.wiring.package; (osgi.wiring.package=com.sun.jdmk.comm)
I set the journal level to the highest verbosity, unfortunately, more information. When I uninstall mylibrary, the package starts without problems.
Any suggestions appreciated!
qqilihq
source share