Search code examples
mavenosgitycho

Maven (Tycho) cannot resolve OSGi Core bundle


I have a dependency on "org.osgi:osgi.core" (7.0.0) in my POM. The reason is that I need access to the "org.osgi.framework" package. I am using Maven (3.6) and Tycho (1.5.1) for building. The build platform runs Debian 10 and Java 11.

I get the following error:

Missing requirement: osgi.core 7.0.0.201802012106 requires 'osgi.unresolvable; (&(!(must.not.resolve=*))(must.not.resolve=*))' but it could not be found

However, if I remove the dependency I get the following error:

Missing requirement: my.bundle 0.0.0.qualifier requires 'java.package; org.osgi.framework 1.7.0' but it could not be found

What is going wrong? How can I resolve this problem?


Solution

  • I get the following error:
    
    Missing requirement: osgi.core 7.0.0.201802012106 requires 'osgi.unresolvable; (&(!(must.not.resolve=*))(must.not.resolve=*))' but it could not be found
    

    The "companion jars" are not meant for runtime and since resolving is a runtime operation (even when performed during build, i.e. for deployment purposes) should not be included (and are therefore marked with the unresolvable requirement).

    However, if I remove the dependency I get the following error:
    Missing requirement: my.bundle 0.0.0.qualifier requires 'java.package; org.osgi.framework 1.7.0' but it could not be found 
    

    This means you have no runtime framework available! Add a runtime dependency on the equinox framework (not intentionally being biased, but since you're using tycho I'm assuming eclipse/equinox landscape. If you have Apache Felix framework available to p2/tycho then use that if you like):

    <dependency>
        <groupId>org.eclipse.platform</groupId>
        <artifactId>org.eclipse.osgi</artifactId>
        <version>3.x.0</version>
        <scope>runtime</scope>
    </dependency>
    // of course use tycho mechanism for above.