Reputation: 362
I'm trying to extend a rule in the eclipse PMD plugin via a plugin fragment. When I try to test my code I get this error which seems to be caused by one of my plugin's dependency projects.
!ENTRY net.sourceforge.pmd.eclipse.plugin 4 0 2015-06-17 09:30:10.972
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: Could not resolve module: net.sourceforge.pmd.eclipse.plugin [1086]
Bundle was not resolved because of a uses contraint violation.
org.osgi.service.resolver.ResolutionException: Uses constraint violation. Unable to resolve resource net.sourceforge.pmd.eclipse.plugin [osgi.identity; osgi.identity="net.sourceforge.pmd.eclipse.plugin"; type="osgi.bundle"; version:Version="4.0.7.v20150522-1709"; singleton:="true"] because it exports package 'org.apache.log4j' and is also exposed to it from resource org.apache.log4j [osgi.identity; osgi.identity="org.apache.log4j"; type="osgi.bundle"; version:Version="1.2.15.v201012070815"] via the following dependency chain:
net.sourceforge.pmd.eclipse.plugin [osgi.identity; osgi.identity="net.sourceforge.pmd.eclipse.plugin"; type="osgi.bundle"; version:Version="4.0.7.v20150522-1709"; singleton:="true"]
require: (&(osgi.wiring.bundle=de.fu_berlin.inf.archnemesis)(bundle-version>=1.0.0))
|
provide: osgi.wiring.bundle; osgi.wiring.bundle="de.fu_berlin.inf.archnemesis"; bundle-version:Version="1.0.0.qualifier"; singleton:="true"
org.eclipse.xtext.util [osgi.identity; osgi.identity="org.eclipse.xtext.util"; type="osgi.bundle"; version:Version="2.8.3.v201506010551"]
import: (&(osgi.wiring.package=org.apache.log4j)(version>=1.2.15))
|
export: osgi.wiring.package: org.apache.log4j
org.apache.log4j [osgi.identity; osgi.identity="org.apache.log4j"; type="osgi.bundle"; version:Version="1.2.15.v201012070815"]
at org.eclipse.osgi.container.Module.start(Module.java:434)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1582)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1561)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1533)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1476)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
Can anyone decode what this error message means and how to fix it?
Upvotes: 1
Views: 3093
Reputation: 1493
I think that the problem is due to the Require-Bundle
directive in net.sourceforge.pmd.eclipse.plugin
bundle coupled with the Export-Package
directive for org.apache.log4j
(this is more or less just a rephrasal of the felix error message).
The required bundle de.fu_berlin.inf.archnemesis
imports log4j and at the same time et.sourceforge.pmd.eclipse.plugin
has log4j jars in its classpath (since it exports it, this is what the error message it telling you). This leads to org.apache.log4j package duplication and triggers the error.
Try to remove the org.apache.log4j
bundle from your runtime in order to let de.fu_berlin.inf.archnemesis
resolve log4 from net.sourceforge.pmd.eclipse.plugin
.
Read also this post about Solving OSGi "Uses" Constraint Violations by Neil Bartlett: I found it very interesting.
Upvotes: 1