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