It looks like you are exporting the package `javax.annotation` from the system bundle (say via `org.osgi.framework.system.packages.extra`, i.e. `-runsystempackages`), while you also have the bundle org.apache.servicemix.specs.annotation-api-1.3 deployed.
Hope that helps, - Ray On Wed, Dec 5, 2018 at 9:07 PM Nhut Thai Le via osgi-dev < osgi-dev@mail.osgi.org> wrote: > Hello, > > I'm using equinox as osgi container and aries.jax.rs.whiteboard to host > our rest API and recently I see the following dependency chain split when > launching: > > RESOLVER: Candidate permutation failed due to a conflict between imports; > will try another if possible. (Uses constraint violation. Unable to resolve > resource org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] because it is exposed to package > 'javax.annotation' from resources org.eclipse.osgi [osgi.identity; > osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; > version:Version="3.12.0.v20170512-1932"; singleton:="true"] and > org.apache.servicemix.specs.annotation-api-1.3 [osgi.identity; > osgi.identity="org.apache.servicemix.specs.annotation-api-1.3"; > type="osgi.bundle"; version:Version="1.3.0.1"] via two dependency chains. > > Chain 1: > org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] > import: (osgi.wiring.package=javax.annotation) > | > export: osgi.wiring.package: javax.annotation > org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; > type="osgi.bundle"; version:Version="3.12.0.v20170512-1932"; > singleton:="true"] > > Chain 2: > org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] > require: (&(osgi.contract=JavaAnnotation)(version=1.3.0)) > | > provide: osgi.contract: JavaAnnotation > org.apache.servicemix.specs.annotation-api-1.3 [osgi.identity; > osgi.identity="org.apache.servicemix.specs.annotation-api-1.3"; > type="osgi.bundle"; version:Version="1.3.0.1"]) > > RESOLVER: Candidate permutation failed due to a conflict between imports; > will try another if possible. (Uses constraint violation. Unable to resolve > resource com.castortech.iris.ba.web.filters [osgi.identity; > osgi.identity="com.castortech.iris.ba.web.filters"; type="osgi.bundle"; > version:Version="1.0.0.qualifier"] because it is exposed to package > 'javax.annotation' from resources > org.apache.servicemix.specs.annotation-api-1.3 [osgi.identity; > osgi.identity="org.apache.servicemix.specs.annotation-api-1.3"; > type="osgi.bundle"; version:Version="1.3.0.1"] and org.eclipse.osgi > [osgi.identity; osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; > version:Version="3.12.0.v20170512-1932"; singleton:="true"] via two > dependency chains. > > Chain 1: > com.castortech.iris.ba.web.filters [osgi.identity; > osgi.identity="com.castortech.iris.ba.web.filters"; type="osgi.bundle"; > version:Version="1.0.0.qualifier"] > require: > (&(osgi.wiring.bundle=org.apache.servicemix.specs.annotation-api-1.3)(bundle-version>=1.3.0)) > | > provide: osgi.wiring.bundle: > org.apache.servicemix.specs.annotation-api-1.3 > org.apache.servicemix.specs.annotation-api-1.3 [osgi.identity; > osgi.identity="org.apache.servicemix.specs.annotation-api-1.3"; > type="osgi.bundle"; version:Version="1.3.0.1"] > > Chain 2: > com.castortech.iris.ba.web.filters [osgi.identity; > osgi.identity="com.castortech.iris.ba.web.filters"; type="osgi.bundle"; > version:Version="1.0.0.qualifier"] > import: (osgi.wiring.package=org.keycloak.jaxrs) > | > export: osgi.wiring.package=org.keycloak.jaxrs; uses:=javax.annotation > org.keycloak.jaxrs-oauth-client [osgi.identity; > osgi.identity="org.keycloak.jaxrs-oauth-client"; type="osgi.bundle"; > version:Version="4.6.0.Final"] > import: (osgi.wiring.package=javax.annotation) > | > export: osgi.wiring.package: javax.annotation > org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; > type="osgi.bundle"; version:Version="3.12.0.v20170512-1932"; > singleton:="true"]) > > RESOLVER: Candidate permutation failed due to a conflict between imports; > will try another if possible. (Uses constraint violation. Unable to resolve > resource org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] because it is exposed to package > 'javax.annotation' from resources org.eclipse.osgi [osgi.identity; > osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; > version:Version="3.12.0.v20170512-1932"; singleton:="true"] and > org.apache.servicemix.specs.annotation-api-1.3 [osgi.identity; > osgi.identity="org.apache.servicemix.specs.annotation-api-1.3"; > type="osgi.bundle"; version:Version="1.3.0.1"] via two dependency chains. > > Chain 1: > org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] > import: (osgi.wiring.package=javax.annotation) > | > export: osgi.wiring.package: javax.annotation > org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; > type="osgi.bundle"; version:Version="3.12.0.v20170512-1932"; > singleton:="true"] > > Chain 2: > org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] > require: (&(osgi.contract=JavaAnnotation)(version=1.3.0)) > | > provide: osgi.contract: JavaAnnotation > org.apache.servicemix.specs.annotation-api-1.3 [osgi.identity; > osgi.identity="org.apache.servicemix.specs.annotation-api-1.3"; > type="osgi.bundle"; version:Version="1.3.0.1"]) > > RESOLVER: Candidate permutation failed due to a conflict between imports; > will try another if possible. (Uses constraint violation. Unable to resolve > resource com.castortech.iris.ba.web.filters [osgi.identity; > osgi.identity="com.castortech.iris.ba.web.filters"; type="osgi.bundle"; > version:Version="1.0.0.qualifier"] because it is exposed to package > 'javax.annotation' from resources > org.apache.servicemix.specs.annotation-api-1.3 [osgi.identity; > osgi.identity="org.apache.servicemix.specs.annotation-api-1.3"; > type="osgi.bundle"; version:Version="1.3.0.1"] and javax.annotation-api > [osgi.identity; osgi.identity="javax.annotation-api"; type="osgi.bundle"; > version:Version="1.3.0"] via two dependency chains. > > Chain 1: > com.castortech.iris.ba.web.filters [osgi.identity; > osgi.identity="com.castortech.iris.ba.web.filters"; type="osgi.bundle"; > version:Version="1.0.0.qualifier"] > require: > (&(osgi.wiring.bundle=org.apache.servicemix.specs.annotation-api-1.3)(bundle-version>=1.3.0)) > | > provide: osgi.wiring.bundle: > org.apache.servicemix.specs.annotation-api-1.3 > org.apache.servicemix.specs.annotation-api-1.3 [osgi.identity; > osgi.identity="org.apache.servicemix.specs.annotation-api-1.3"; > type="osgi.bundle"; version:Version="1.3.0.1"] > > Chain 2: > com.castortech.iris.ba.web.filters [osgi.identity; > osgi.identity="com.castortech.iris.ba.web.filters"; type="osgi.bundle"; > version:Version="1.0.0.qualifier"] > import: (osgi.wiring.package=org.keycloak.jaxrs) > | > export: osgi.wiring.package=org.keycloak.jaxrs; uses:=javax.annotation > org.keycloak.jaxrs-oauth-client [osgi.identity; > osgi.identity="org.keycloak.jaxrs-oauth-client"; type="osgi.bundle"; > version:Version="4.6.0.Final"] > import: (osgi.wiring.package=javax.annotation) > | > export: osgi.wiring.package: javax.annotation > javax.annotation-api [osgi.identity; > osgi.identity="javax.annotation-api"; type="osgi.bundle"; > version:Version="1.3.0"]) > > RESOLVER: Candidate permutation failed due to a conflict between imports; > will try another if possible. (Uses constraint violation. Unable to resolve > resource org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] because it is exposed to package > 'javax.annotation' from resources org.eclipse.osgi [osgi.identity; > osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; > version:Version="3.12.0.v20170512-1932"; singleton:="true"] and > org.apache.servicemix.specs.annotation-api-1.3 [osgi.identity; > osgi.identity="org.apache.servicemix.specs.annotation-api-1.3"; > type="osgi.bundle"; version:Version="1.3.0.1"] via two dependency chains. > > Chain 1: > org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] > import: (osgi.wiring.package=javax.annotation) > | > export: osgi.wiring.package: javax.annotation > org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; > type="osgi.bundle"; version:Version="3.12.0.v20170512-1932"; > singleton:="true"] > > Chain 2: > org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] > require: (&(osgi.contract=JavaAnnotation)(version=1.3.0)) > | > provide: osgi.contract: JavaAnnotation > org.apache.servicemix.specs.annotation-api-1.3 [osgi.identity; > osgi.identity="org.apache.servicemix.specs.annotation-api-1.3"; > type="osgi.bundle"; version:Version="1.3.0.1"]) > > RESOLVER: Candidate permutation failed due to a conflict between imports; > will try another if possible. (Uses constraint violation. Unable to resolve > resource org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] because it is exposed to package > 'javax.annotation' from resources org.eclipse.osgi [osgi.identity; > osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; > version:Version="3.12.0.v20170512-1932"; singleton:="true"] and > org.apache.servicemix.specs.annotation-api-1.3 [osgi.identity; > osgi.identity="org.apache.servicemix.specs.annotation-api-1.3"; > type="osgi.bundle"; version:Version="1.3.0.1"] via two dependency chains. > > Chain 1: > org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] > import: (osgi.wiring.package=javax.annotation) > | > export: osgi.wiring.package: javax.annotation > org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; > type="osgi.bundle"; version:Version="3.12.0.v20170512-1932"; > singleton:="true"] > > Chain 2: > org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] > require: (&(osgi.contract=JavaAnnotation)(version=1.3.0)) > | > provide: osgi.contract: JavaAnnotation > org.apache.servicemix.specs.annotation-api-1.3 [osgi.identity; > osgi.identity="org.apache.servicemix.specs.annotation-api-1.3"; > type="osgi.bundle"; version:Version="1.3.0.1"]) > > RESOLVER: Candidate permutation failed due to a conflict between imports; > will try another if possible. (Uses constraint violation. Unable to resolve > resource org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] because it is exposed to package > 'javax.annotation' from resources org.eclipse.osgi [osgi.identity; > osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; > version:Version="3.12.0.v20170512-1932"; singleton:="true"] and > org.apache.servicemix.specs.annotation-api-1.3 [osgi.identity; > osgi.identity="org.apache.servicemix.specs.annotation-api-1.3"; > type="osgi.bundle"; version:Version="1.3.0.1"] via two dependency chains. > > Chain 1: > org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] > import: (osgi.wiring.package=javax.annotation) > | > export: osgi.wiring.package: javax.annotation > org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; > type="osgi.bundle"; version:Version="3.12.0.v20170512-1932"; > singleton:="true"] > > Chain 2: > org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] > require: (&(osgi.contract=JavaAnnotation)(version=1.3.0)) > | > provide: osgi.contract: JavaAnnotation > org.apache.servicemix.specs.annotation-api-1.3 [osgi.identity; > osgi.identity="org.apache.servicemix.specs.annotation-api-1.3"; > type="osgi.bundle"; version:Version="1.3.0.1"]) > > RESOLVER: Candidate permutation failed due to a conflict between imports; > will try another if possible. (Uses constraint violation. Unable to resolve > resource org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] because it is exposed to package > 'javax.annotation' from resources javax.annotation-api [osgi.identity; > osgi.identity="javax.annotation-api"; type="osgi.bundle"; > version:Version="1.3.0"] and org.apache.servicemix.specs.annotation-api-1.3 > [osgi.identity; > osgi.identity="org.apache.servicemix.specs.annotation-api-1.3"; > type="osgi.bundle"; version:Version="1.3.0.1"] via two dependency chains. > > Chain 1: > org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] > import: (osgi.wiring.package=javax.annotation) > | > export: osgi.wiring.package: javax.annotation > javax.annotation-api [osgi.identity; > osgi.identity="javax.annotation-api"; type="osgi.bundle"; > version:Version="1.3.0"] > > Chain 2: > org.apache.aries.jax.rs.whiteboard [osgi.identity; > osgi.identity="org.apache.aries.jax.rs.whiteboard"; type="osgi.bundle"; > version:Version="1.0.1"] > require: (&(osgi.contract=JavaAnnotation)(version=1.3.0)) > | > provide: osgi.contract: JavaAnnotation > org.apache.servicemix.specs.annotation-api-1.3 [osgi.identity; > osgi.identity="org.apache.servicemix.specs.annotation-api-1.3"; > type="osgi.bundle"; version:Version="1.3.0.1"]) > > It look like org.eclipse.osgi is a uber that provide all the osgi specs > used by equinox and org.apache.servicemix.specs.annotation-api-1.3 is the > partial spec that come with the aries.jax.rs.whiteboard implementation and > finally the javax.annotation-api is the generic api. Should I only use the > API that come with the impl in my launch to avoid this kind of dependency > mix up? > > Hope to get some insight on this > > Thai > > _______________________________________________ > OSGi Developer Mail List > osgi-dev@mail.osgi.org > https://mail.osgi.org/mailman/listinfo/osgi-dev -- *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile> (@rotty3000) Senior Software Architect *Liferay, Inc.* <http://www.liferay.com> (@Liferay) Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org> (@OSGiAlliance)
_______________________________________________ OSGi Developer Mail List osgi-dev@mail.osgi.org https://mail.osgi.org/mailman/listinfo/osgi-dev