bndtools Eclipse 插件始终为我无法追踪的logback报告“使用约束违规” (我已经完成了在 StackOverflow 和 Google 上可以找到的所有相关问题)。
每次我修改“运行配置”时都会出现约束冲突,并在足够的项目清理/重建和 Eclipse 重新启动后最终消失(对各种神灵的低声调用和偶尔的鸡牺牲也可能与此有关)。
我的工作区似乎没有直接导出logback,所以不清楚是什么导致了两个冲突链 - 它可能是 Felix 包或 SLF4J 之一,但这似乎也不太可能。
部分捆绑包列表:
osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.shell)',\
osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.command)',\
osgi.identity;filter:='(osgi.identity=org.apache.felix.log)',\
osgi.identity;filter:='(osgi.identity=slf4j.api)',\
osgi.identity;filter:='(osgi.identity=ch.qos.logback.core)',\
osgi.identity;filter:='(osgi.identity=ch.qos.logback.classic)',\
约束违规报告:
Uses constraint violation. Unable to resolve resource ch.qos.logback.classic [ch.qos.logback.classic ver=1.1.2] because it is exposed to package 'ch.qos.logback.classic.spi' from resources ch.qos.logback.classic [ch.qos.logback.classic ver=1.1.2] and ch.qos.logback.classic [ch.qos.logback.classic ver=1.1.2] via two dependency chains.
Chain 1: ch.qos.logback.classic [ch.qos.logback.classic ver=1.1.2]
import: (&(osgi.wiring.package=ch.qos.logback.classic.spi)(version>=1.1.0))
|
export: osgi.wiring.package: ch.qos.logback.classic.spi ch.qos.logback.classic [ch.qos.logback.classic ver=1.1.2]
Chain 2: ch.qos.logback.classic [ch.qos.logback.classic ver=1.1.2]
import: (&(osgi.wiring.package=ch.qos.logback.classic.spi)(version>=1.1.0)(!(version>=2.0.0)))
|
export: osgi.wiring.package: ch.qos.logback.classic.spi ch.qos.logback.classic [ch.qos.logback.classic ver=1.1.2] org.osgi.service.resolver.ResolutionException: Uses constraint violation. Unable to resolve resource ch.qos.logback.classic [ch.qos.logback.classic ver=1.1.2] because it is exposed to package 'ch.qos.logback.classic.spi' from resources ch.qos.logback.classic [ch.qos.logback.classic ver=1.1.2] and ch.qos.logback.classic [ch.qos.logback.classic ver=1.1.2] via two dependency chains.
Chain 1: ch.qos.logback.classic [ch.qos.logback.classic ver=1.1.2]
import: (&(osgi.wiring.package=ch.qos.logback.classic.spi)(version>=1.1.0))
|
export: osgi.wiring.package: ch.qos.logback.classic.spi ch.qos.logback.classic [ch.qos.logback.classic ver=1.1.2]
Chain 2: ch.qos.logback.classic [ch.qos.logback.classic ver=1.1.2]
import: (&(osgi.wiring.package=ch.qos.logback.classic.spi)(version>=1.1.0)(!(version>=2.0.0)))
|
export: osgi.wiring.package: ch.qos.logback.classic.spi ch.qos.logback.classic [ch.qos.logback.classic ver=1.1.2] at org.apache.felix.resolver.ResolverImpl.checkDynamicPackageSpaceConsistency(ResolverImpl.java:1133) at org.apache.felix.resolver.ResolverImpl.checkPackageSpaceConsistency(ResolverImpl.java:1086) at org.apache.felix.resolver.ResolverImpl.checkDynamicPackageSpaceConsistency(ResolverImpl.java:1402) at org.apache.felix.resolver.ResolverImpl.checkPackageSpaceConsistency(ResolverImpl.java:1086) at org.apache.felix.resolver.ResolverImpl.checkDynamicPackageSpaceConsistency(ResolverImpl.java:1402) at org.apache.felix.resolver.ResolverImpl.checkPackageSpaceConsistency(ResolverImpl.java:1086) at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:260) at biz.aQute.resolve.ResolveProcess.resolveRequired(ResolveProcess.java:34) at org.bndtools.core.resolve.ResolveOperation.run(ResolveOperation.java:61) at org.bndtools.core.resolve.ResolveJob.run(ResolveJob.java:43) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
有没有办法解决这个问题?我什至会为一个一致的解决方法感到非常高兴..