[ 
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)

Reply via email to