[ https://issues.apache.org/jira/browse/FELIX-6023?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16749670#comment-16749670 ]
Stefan Seifert commented on FELIX-6023: --------------------------------------- yes, i can start a release vote today > SCR bnd plugin sometimes fails with IncompatibleClassChangeError: > Implementing class > ------------------------------------------------------------------------------------ > > Key: FELIX-6023 > URL: https://issues.apache.org/jira/browse/FELIX-6023 > Project: Felix > Issue Type: Bug > Components: SCR Tooling > Affects Versions: scr bnd plugin 1.9.0 > Environment: Maven home: /usr/local/Cellar/maven/3.6.0/libexec > Java version: 1.8.0_192, vendor: Oracle Corporation, runtime: > /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/jre > Default locale: en_US, platform encoding: UTF-8 > OS name: "mac os x", version: "10.14.2", arch: "x86_64", family: "mac" > Reporter: Mark Adamcin > Assignee: Stefan Seifert > Priority: Major > Labels: patch-available > Fix For: scr bnd plugin 1.10.0 > > Attachments: com.adobe.acs.acs-aem-commons-bundle.bnd-1.9.0.log, > com.adobe.acs.acs-aem-commons-bundle.bnd-1.9.1-SNAPSHOT.log > > > > When building a project where a newer version of a dependency is embedded in > the project artifact with a conflicting older version of said dependency is > also present on the classpath, SOME environments encounter an exception that > is similar to the following: > {noformat} > [ERROR] Manifest com.adobe.acs:acs-aem-commons-bundle:bundle:3.19.1-SNAPSHOT > : Got unexpected exception while > analyzing:org.apache.felix.scrplugin.SCRDescriptorException: Unable to load > compiled class: com.google.common.base.Suppliers$SupplierFunctionImpl > at > org.apache.felix.scrplugin.helper.ClassScanner.scanSources(ClassScanner.java:156) > at > org.apache.felix.scrplugin.SCRDescriptorGenerator.execute(SCRDescriptorGenerator.java:146) > at > org.apache.felix.scrplugin.bnd.SCRDescriptorBndPlugin.analyzeJar(SCRDescriptorBndPlugin.java:178) > at aQute.bnd.osgi.Analyzer.doPlugins(Analyzer.java:820) > at aQute.bnd.osgi.Analyzer.analyze(Analyzer.java:229) > at aQute.bnd.osgi.Builder.analyze(Builder.java:408) > at aQute.bnd.osgi.Analyzer.calcManifest(Analyzer.java:850) > at aQute.bnd.osgi.Builder.build(Builder.java:116) > at > org.apache.felix.bundleplugin.ManifestPlugin.getAnalyzer(ManifestPlugin.java:291) > at > org.apache.felix.bundleplugin.ManifestPlugin.execute(ManifestPlugin.java:98) > at > org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:384) > at > org.apache.felix.bundleplugin.BundlePlugin.execute(BundlePlugin.java:375) > at > org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137) > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210) > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156) > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81) > at > org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56) > at > org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) > at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305) > at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192) > at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105) > at org.apache.maven.cli.MavenCli.execute(MavenCli.java:956) > at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) > at org.apache.maven.cli.MavenCli.main(MavenCli.java:192) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) > at > org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) > at > org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) > at > org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) > Caused by: java.lang.IncompatibleClassChangeError: Implementing class > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClass(ClassLoader.java:763) > at > java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) > at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) > at java.net.URLClassLoader.access$100(URLClassLoader.java:74) > at java.net.URLClassLoader$1.run(URLClassLoader.java:369) > at java.net.URLClassLoader$1.run(URLClassLoader.java:363) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:362) > at java.lang.ClassLoader.loadClass(ClassLoader.java:424) > at java.lang.ClassLoader.loadClass(ClassLoader.java:357) > at > org.apache.felix.scrplugin.helper.ClassScanner.scanSources(ClassScanner.java:144) > ... 33 more > [ERROR] Error(s) found in manifest configuration{noformat} > The sequence of dependencies in the build should allow the preferred embedded > version to be declared with higher precedence than the non-preferred version, > but this sequence does not appear to be respected because of the use of a > non-linked HashSet in `SCRDescriptorBndPlugin.getClassPath()` to post-process > the list of classpath elements returned from Analyzer.getClasspath(). > I attached to debug logs from the execution. the *.bnd-1.9.0.log file shows > the `uber-jar` artifact listed before the `guava` artifact in the classpath > log, but their order is reversed in the dependencies log. > I then replaced the HashSet with a LinkedHashSet in the bnd plugin and > rebuilt the project, resulting in the *.bnd-1.9.1-SNAPSHOT.log, which shows > the sequence of these two artifacts being the same in both the classpath log > and the dependencies log. > See: > [https://github.com/Adobe-Consulting-Services/acs-aem-commons/issues/1675] > for background. -- This message was sent by Atlassian JIRA (v7.6.3#76005)