1

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)

有没有办法解决这个问题?我什至会为一个一致的解决方法感到非常高兴..

4

0 回答 0