2011-04-03 33 views
0

我在一个情况之间的冲突,在我的费利克斯OSGi容器将不通过部署Groovy后正常启动:OSGi的 - 候选人置换失败,原因是进口

OBR:部署“Groovy脚本Languge” @ 1.7。 3

托管部署&了Groovy的东西跑,直到我做了一个重新开始我的OSGi容器......那么大部分包将无法启动。 FWIW,我很确定Groovy不是原因,即使它的包名中有拼写错误。 :-)

后一些故障排除,转向对Felix的线记录(!感谢上帝),我注意到了这一点(所有其他失败的包,类似的原因中):

 
2011-04-03 16:26:43,108 DEBUG [FelixStartLevel] felix.wire - Candidate permutation failed due to a conflict between imports; will try another if possible. (org.apache.felix.framework.resolver.ResolveException: Unable to resolve module org.apache.felix.http.bundle [36.0] because it is exposed to package 'org.osgi.framework' from org.apache.felix.framework [0] and com.springsource.org.aspectj.tools [47.0] via two dependency chains. 

Chain 1: 
    org.apache.felix.http.bundle [36.0] 
    import: (&(package=org.osgi.framework)(version>=1.3.0)) 
    | 
    export: package=org.osgi.framework 
    org.apache.felix.framework [0] 

Chain 2: 
    org.apache.felix.http.bundle [36.0] 
    import: (&(package=org.osgi.service.log)(version>=1.3.0)) 
    | 
    export: package=org.osgi.service.log; uses:=org.osgi.framework 
    osgi.cmpn [15.0] 
    import: (&(package=org.osgi.framework)(version>=1.5.0)(!(version>=2.0.0))) 
    | 
    export: package=org.osgi.framework 
    com.springsource.org.aspectj.tools [47.0]) 

好像都o.a.felix.frameworkc.s.o.aspectj.tools正在出口o.osgi.framework

我能得到的东西去除捆绑ID 47(c.s.o.aspectj.tools)再次运行,但尚未检查是否有其他含义。感觉不对,因为我删除了c.s.o.aspectj.tools,但它被OBR存储库指定为Groovy的必需(或可选)。实际上,它是通过Groovy的obr:deploy命令安装的。

感觉像c.s.o.aspectj.tools不应该导出o.osgi.framework,但这只是一个猜测,因为我不使用aspectj工具的东西。

问:什么是解决此类问题,而不诉诸于猜测正确的方法是什么?

回答

1

你是对的,c.s.o.aspectj.tools不应该出口org.osgi.framework,但显然它。准确地说,我选中的版本1.6.8,并具有下列导出声明:

org.osgi.framework;version="1.6.8.RELEASE" 

而且,它不进口org.osgi.framework。这是纯粹的错误,我想说这是值得春天队的bugreport;如果你导出,你通常应该导入,并且我想不出一个有效的原因来为osg.osgi.framework标记一个与实际版本不同的版本。

你怎么能解决这个问题,现在?通过将httpcmpn连接到相同的framework包可以解决两个解析链的问题;甚至在外壳的简单osgi:refresh可以帮助你,因为声明的版本(1.6.8.RELEASE)既是httpcmpn的进口范围内,由事故。

如果你并不真正需要的东西aspectj,我会离开它。

+0

谢谢@angelo!发现这个https://issuetracker.springsource.com/browse/EBR-407错误报道似乎是相关的。我现在只是删除aspectj。 – kctang 2011-04-04 12:22:07