[ https://issues.apache.org/jira/browse/FELIX-5074?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14952270#comment-14952270 ]
Konrad Windszus commented on FELIX-5074: ---------------------------------------- After excluding the bnd dependency via {code} <dependency> <groupId>org.apache.felix</groupId> <artifactId>org.apache.felix.scr.bnd</artifactId> <version>1.4.0</version> <exclusions> <exclusion> <groupId>biz.aQute.bnd</groupId> <artifactId>bndlib</artifactId> </exclusion> </exclusions> </dependency> {code} I get the the following exception {code} [ERROR] Failed to execute goal org.apache.felix:maven-bundle-plugin:3.0.0:bundle (default-bundle) on project oneweb-showcase-aem-components-core: Execution default-bundle of goal org.apache.felix:maven-bundle-plugin:3.0.0:bundle failed: An API incompatibility was encountered while executing org.apache.felix:maven-bundle-plugin:3.0.0:bundle: java.lang.NoSuchMethodError: org.osgi.service.component.annotations.Reference.bind()Ljava/lang/String; [ERROR] ----------------------------------------------------- [ERROR] realm = extension>org.apache.felix:maven-bundle-plugin:3.0.0 [ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy [ERROR] urls[0] = file:/Users/konradwindszus/.m2/repository/org/apache/felix/maven-bundle-plugin/3.0.0/maven-bundle-plugin-3.0.0.jar [ERROR] urls[1] = file:/Users/konradwindszus/.m2/repository/org/apache/felix/org.apache.felix.scr.bnd/1.4.0/org.apache.felix.scr.bnd-1.4.0.jar [ERROR] urls[2] = file:/Users/konradwindszus/.m2/repository/org/osgi/org.osgi.core/4.3.1/org.osgi.core-4.3.1.jar [ERROR] urls[3] = file:/Users/konradwindszus/.m2/repository/biz/aQute/bnd/biz.aQute.bndlib/3.0.0/biz.aQute.bndlib-3.0.0.jar [ERROR] urls[4] = file:/Users/konradwindszus/.m2/repository/org/apache/felix/org.apache.felix.bundlerepository/1.6.6/org.apache.felix.bundlerepository-1.6.6.jar [ERROR] urls[5] = file:/Users/konradwindszus/.m2/repository/org/easymock/easymock/2.5.2/easymock-2.5.2.jar [ERROR] urls[6] = file:/Users/konradwindszus/.m2/repository/org/apache/felix/org.apache.felix.utils/1.6.0/org.apache.felix.utils-1.6.0.jar [ERROR] urls[7] = file:/Users/konradwindszus/.m2/repository/org/osgi/org.osgi.compendium/4.2.0/org.osgi.compendium-4.2.0.jar [ERROR] urls[8] = file:/Users/konradwindszus/.m2/repository/org/slf4j/slf4j-jdk14/1.5.6/slf4j-jdk14-1.5.6.jar [ERROR] urls[9] = file:/Users/konradwindszus/.m2/repository/org/slf4j/jcl-over-slf4j/1.5.6/jcl-over-slf4j-1.5.6.jar [ERROR] urls[10] = file:/Users/konradwindszus/.m2/repository/org/apache/maven/reporting/maven-reporting-api/2.2.0/maven-reporting-api-2.2.0.jar [ERROR] urls[11] = file:/Users/konradwindszus/.m2/repository/org/apache/maven/doxia/doxia-logging-api/1.1/doxia-logging-api-1.1.jar [ERROR] urls[12] = file:/Users/konradwindszus/.m2/repository/junit/junit/4.11/junit-4.11.jar [ERROR] urls[13] = file:/Users/konradwindszus/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar [ERROR] urls[14] = file:/Users/konradwindszus/.m2/repository/commons-cli/commons-cli/1.2/commons-cli-1.2.jar [ERROR] urls[15] = file:/Users/konradwindszus/.m2/repository/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar [ERROR] urls[16] = file:/Users/konradwindszus/.m2/repository/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar [ERROR] urls[17] = file:/Users/konradwindszus/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar [ERROR] urls[18] = file:/Users/konradwindszus/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar [ERROR] urls[19] = file:/Users/konradwindszus/.m2/repository/org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.jar [ERROR] urls[20] = file:/Users/konradwindszus/.m2/repository/org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.jar [ERROR] urls[21] = file:/Users/konradwindszus/.m2/repository/org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.jar [ERROR] urls[22] = file:/Users/konradwindszus/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.jar [ERROR] urls[23] = file:/Users/konradwindszus/.m2/repository/org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.jar [ERROR] urls[24] = file:/Users/konradwindszus/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar [ERROR] urls[25] = file:/Users/konradwindszus/.m2/repository/org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar [ERROR] urls[26] = file:/Users/konradwindszus/.m2/repository/org/codehaus/plexus/plexus-utils/3.0.10/plexus-utils-3.0.10.jar [ERROR] urls[27] = file:/Users/konradwindszus/.m2/repository/org/sonatype/plexus/plexus-build-api/0.0.7/plexus-build-api-0.0.7.jar [ERROR] urls[28] = file:/Users/konradwindszus/.m2/repository/org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.jar [ERROR] urls[29] = file:/Users/konradwindszus/.m2/repository/org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.jar [ERROR] urls[30] = file:/Users/konradwindszus/.m2/repository/org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.jar [ERROR] urls[31] = file:/Users/konradwindszus/.m2/repository/org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.jar [ERROR] urls[32] = file:/Users/konradwindszus/.m2/repository/org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.jar [ERROR] urls[33] = file:/Users/konradwindszus/.m2/repository/org/apache/velocity/velocity/1.5/velocity-1.5.jar [ERROR] urls[34] = file:/Users/konradwindszus/.m2/repository/commons-lang/commons-lang/2.1/commons-lang-2.1.jar [ERROR] urls[35] = file:/Users/konradwindszus/.m2/repository/oro/oro/2.0.8/oro-2.0.8.jar [ERROR] urls[36] = file:/Users/konradwindszus/.m2/repository/org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.jar [ERROR] urls[37] = file:/Users/konradwindszus/.m2/repository/commons-collections/commons-collections/3.2/commons-collections-3.2.jar [ERROR] urls[38] = file:/Users/konradwindszus/.m2/repository/org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.jar [ERROR] urls[39] = file:/Users/konradwindszus/.m2/repository/org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.jar [ERROR] urls[40] = file:/Users/konradwindszus/.m2/repository/org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.jar [ERROR] urls[41] = file:/Users/konradwindszus/.m2/repository/org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.jar [ERROR] Number of foreign imports: 1 [ERROR] import: Entry[import from realm ClassRealm[maven.api, parent: null]] {code} The according stack trace to the missing bind method is here {code} Caused by: java.lang.NoSuchMethodError: org.osgi.service.component.annotations.Reference.bind()Ljava/lang/String; at aQute.bnd.component.AnnotationReader.doReference(AnnotationReader.java:532) at aQute.bnd.component.AnnotationReader.annotation(AnnotationReader.java:227) at aQute.bnd.osgi.Clazz.doAnnotations(Clazz.java:1485) at aQute.bnd.osgi.Clazz.doAttribute(Clazz.java:953) at aQute.bnd.osgi.Clazz.doAttributes(Clazz.java:930) at aQute.bnd.osgi.Clazz.parseClassFile(Clazz.java:709) at aQute.bnd.osgi.Clazz.parseClassFile(Clazz.java:512) at aQute.bnd.osgi.Clazz.parseClassFileWithCollector(Clazz.java:501) at aQute.bnd.component.AnnotationReader.getDef(AnnotationReader.java:131) at aQute.bnd.component.AnnotationReader.getDefinition(AnnotationReader.java:127) at aQute.bnd.component.DSAnnotations.analyzeJar(DSAnnotations.java:79) at aQute.bnd.osgi.Analyzer.doPlugins(Analyzer.java:658) at aQute.bnd.osgi.Analyzer.analyze(Analyzer.java:213) at aQute.bnd.osgi.Builder.analyze(Builder.java:379) at aQute.bnd.osgi.Analyzer.calcManifest(Analyzer.java:688) at aQute.bnd.osgi.Builder.build(Builder.java:104) at org.apache.felix.bundleplugin.BundlePlugin.buildOSGiBundle(BundlePlugin.java:651) at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:371) at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:288) at org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:279) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132) ... 20 more {code} This is due to the fact that {{org.osgi.compendium}} in version 4.3.0 is embedded in the {{felix.scr.bnd}} plugin JAR, while bndlib 3.0 embeds {{org.osgi.service.component.annotations}} from {{org.osgi.compendium}} in version 6.0. The {{felix.scr.bnd}} plugin should not embed anything which is already part of bndlib. Even version 2.1.0 of bndlib embeds part of {{org.osgi}}. Why is embedding {{org.osgi.compendium}} necessary at all? What dependencies from that artifact are actually used, which are not already known to bndlib? > Using org.apache.felix.scr.bnd together with maven-bundle-plugin leads to > using the wrong bnd version > ----------------------------------------------------------------------------------------------------- > > Key: FELIX-5074 > URL: https://issues.apache.org/jira/browse/FELIX-5074 > Project: Felix > Issue Type: Bug > Components: SCR Tooling > Affects Versions: scr bnd plugin 1.4.0 > Reporter: Konrad Windszus > Attachments: pom.xml > > > If I have a POM with a plugin configuration like this > {code} > <plugin> > <groupId>org.apache.felix</groupId> > <artifactId>maven-bundle-plugin</artifactId> > <version>3.0.0</version> > <extensions>true</extensions> > <configuration> > <instructions> > <!-- support parsing of felix annotations through the felix.scr.bnd > plugin --> > > <_plugin>org.apache.felix.scrplugin.bnd.SCRDescriptorBndPlugin;destdir=target/classes</_plugin> > </instructions> > </configuration> > <dependencies> > <!-- > https://github.com/apache/felix/tree/trunk/tools/org.apache.felix.scr.bnd --> > <dependency> > <groupId>org.apache.felix</groupId> > <artifactId>org.apache.felix.scr.bnd</artifactId> > <version>1.4.0</version> > </dependency> > </dependencies> > </plugin> > {code} > Unfortunately {{org.apache.felix.scr.bnd}} depends on > {{biz.aQute.bnd:bndlib:jar:2.1.0}}. Therefore the classpath of > maven-bundle-plugin looks like this: > {code} > [DEBUG] Populating class realm > plugin>org.apache.felix:maven-bundle-plugin:3.0.0 > [DEBUG] Included: org.apache.felix:maven-bundle-plugin:jar:3.0.0 > [DEBUG] Included: org.apache.felix:org.apache.felix.scr.bnd:jar:1.4.0 > [DEBUG] Included: biz.aQute.bnd:bndlib:jar:2.1.0 > [DEBUG] Included: org.osgi:org.osgi.core:jar:4.3.1 > [DEBUG] Included: biz.aQute.bnd:biz.aQute.bndlib:jar:3.0.0 > [DEBUG] Included: > org.apache.felix:org.apache.felix.bundlerepository:jar:1.6.6 > [DEBUG] Included: org.easymock:easymock:jar:2.5.2 > [DEBUG] Included: org.apache.felix:org.apache.felix.utils:jar:1.6.0 > [DEBUG] Included: org.osgi:org.osgi.compendium:jar:4.2.0 > [DEBUG] Included: org.slf4j:slf4j-jdk14:jar:1.5.6 > [DEBUG] Included: org.slf4j:slf4j-api:jar:1.5.6 > [DEBUG] Included: org.slf4j:jcl-over-slf4j:jar:1.5.6 > [DEBUG] Included: org.apache.maven.reporting:maven-reporting-api:jar:2.2.0 > [DEBUG] Included: org.apache.maven.doxia:doxia-logging-api:jar:1.1 > [DEBUG] Included: junit:junit:jar:4.11 > [DEBUG] Included: org.hamcrest:hamcrest-core:jar:1.3 > [DEBUG] Included: commons-cli:commons-cli:jar:1.2 > [DEBUG] Included: > org.codehaus.plexus:plexus-interactivity-api:jar:1.0-alpha-4 > [DEBUG] Included: backport-util-concurrent:backport-util-concurrent:jar:3.1 > [DEBUG] Included: org.sonatype.plexus:plexus-sec-dispatcher:jar:1.3 > [DEBUG] Included: org.sonatype.plexus:plexus-cipher:jar:1.4 > [DEBUG] Included: org.apache.maven:maven-archiver:jar:2.5 > [DEBUG] Included: org.codehaus.plexus:plexus-archiver:jar:2.1 > [DEBUG] Included: org.codehaus.plexus:plexus-io:jar:2.0.2 > [DEBUG] Included: org.codehaus.plexus:plexus-interpolation:jar:1.15 > [DEBUG] Included: org.apache.maven.shared:maven-dependency-tree:jar:2.1 > [DEBUG] Included: org.codehaus.plexus:plexus-component-annotations:jar:1.5.5 > [DEBUG] Included: org.eclipse.aether:aether-util:jar:0.9.0.M2 > [DEBUG] Included: org.codehaus.plexus:plexus-utils:jar:3.0.10 > [DEBUG] Included: org.sonatype.plexus:plexus-build-api:jar:0.0.7 > [DEBUG] Included: org.apache.maven.doxia:doxia-sink-api:jar:1.0 > [DEBUG] Included: org.apache.maven.doxia:doxia-site-renderer:jar:1.0 > [DEBUG] Included: org.apache.maven.doxia:doxia-core:jar:1.0 > [DEBUG] Included: org.codehaus.plexus:plexus-i18n:jar:1.0-beta-7 > [DEBUG] Included: org.codehaus.plexus:plexus-velocity:jar:1.1.7 > [DEBUG] Included: org.apache.velocity:velocity:jar:1.5 > [DEBUG] Included: commons-lang:commons-lang:jar:2.1 > [DEBUG] Included: oro:oro:jar:2.0.8 > [DEBUG] Included: org.apache.maven.doxia:doxia-decoration-model:jar:1.0 > [DEBUG] Included: commons-collections:commons-collections:jar:3.2 > [DEBUG] Included: org.apache.maven.doxia:doxia-module-apt:jar:1.0 > [DEBUG] Included: org.apache.maven.doxia:doxia-module-fml:jar:1.0 > [DEBUG] Included: org.apache.maven.doxia:doxia-module-xdoc:jar:1.0 > [DEBUG] Included: org.apache.maven.doxia:doxia-module-xhtml:jar:1.0 > [DEBUG] Excluded: org.apache.maven:maven-core:jar:2.2.0 > [DEBUG] Excluded: org.apache.maven:maven-settings:jar:2.2.0 > [DEBUG] Excluded: > org.apache.maven:maven-plugin-parameter-documenter:jar:2.2.0 > [DEBUG] Excluded: org.apache.maven:maven-profile:jar:2.2.0 > [DEBUG] Excluded: org.apache.maven:maven-model:jar:2.2.0 > [DEBUG] Excluded: org.apache.maven:maven-artifact:jar:2.2.0 > [DEBUG] Excluded: > org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9-stable-1 > [DEBUG] Excluded: org.apache.maven:maven-repository-metadata:jar:2.2.0 > [DEBUG] Excluded: org.apache.maven:maven-error-diagnostics:jar:2.2.0 > [DEBUG] Excluded: org.apache.maven:maven-project:jar:2.2.0 > [DEBUG] Excluded: org.apache.maven:maven-plugin-registry:jar:2.2.0 > [DEBUG] Excluded: org.apache.maven:maven-plugin-api:jar:2.2.0 > [DEBUG] Excluded: org.apache.maven:maven-plugin-descriptor:jar:2.2.0 > [DEBUG] Excluded: org.apache.maven:maven-artifact-manager:jar:2.2.0 > [DEBUG] Excluded: org.apache.maven:maven-monitor:jar:2.2.0 > [DEBUG] Excluded: classworlds:classworlds:jar:1.1 > {code} > So the classpath contains both bnd 2.1 and bnd 3.0. > IMHO the {{felix.scr.bnd}} should not transitively influence the classpath. I > guess marking the dependency to bnd as provided in its pom.xml should do the > trick here! -- This message was sent by Atlassian JIRA (v6.3.4#6332)