A plugin fails to load at runtime, and the log contains an OsgiContainerException with a BundleException as its root cause. For example:
1 2WARNING: Unable to enable plugin 'com.atlassian.myplugin.my-plugin' com.atlassian.plugin.osgi.container.OsgiContainerException: Cannot start plugin: com.atlassian.myplugin.my-plugin at com.atlassian.plugin.osgi.factory.OsgiPlugin.enableInternal(OsgiPlugin.java:385) at com.atlassian.plugin.impl.AbstractPlugin.enable(AbstractPlugin.java:212) ... Caused by: org.osgi.framework.BundleException: Unable to resolve due to constraint violation. at org.apache.felix.framework.Felix._resolveBundle(Felix.java:1732) at org.apache.felix.framework.Felix._startBundle(Felix.java:1588) at org.apache.felix.framework.Felix.startBundle(Felix.java:1541) at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:371)
If your plugin is failing to enable with the message "Unable to resolve due to constraint violation." but doesn't specify a particular package or what the constraint violation is, it's possible that the exporter of a package that you are importing is imposing a uses constraint directive that your plugin is not satisfying. You may need to add a <Package-Import> to your own plugin to satisfy this directive.
At the moment, determining which bundle imposes a uses constraint is primarily guesswork. You will need to look through the META-INF/manifest.mf files of bundles from which you are importing packages looking for uses directives in the Export-Package: section.
For example:
1 2Manifest-Version: 1.0 Export-Package: com.pyxis.greenhopper;uses:="javax.xml.bind.annotation";version:="4.3.1" Import-Package: javax.xml.bind.annotation;version="2.1.0"
The uses:="javax.xml.bind.annotation" implies that plugins importing both com.pyxis.greenhopper and javax.xml.bind.annotation must import version "2.1.0" of javax.xml.bind.annotation. This can be achieved by adding the relevant <Package-Import> to your pom.xml:
1 2<build> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> <configuration> <instructions> <Import-Package> javax.xml.bind*;version="2.1.0", <!-- note the specified version String --> * </Import-Package> <Spring-Context>*;timeout:=60</Spring-Context> </instructions> </configuration> </plugin> </plugins> </build>
Rate this page: