2016-04-22 50 views
0

我有一个OSGi设置与Apache Felix和大量的依赖关系。其中一种依赖关系(Apache CXF)对Spring中的包(org.springframework.context.support)具有可选的依赖关系。此依赖关系未得到解决(未在Felix Web UI的“导入的软件包”中列出)。这会导致在我的应用程序中找不到类的异常。如何排除Apache Felix故障解决可选依赖项?

我认为这是因为我有一个典型的依赖地狱问题;春季包可能会导入一些东西,导入其他东西,这与某些东西(或CXF本身)的导入不可调和。现在,如果依赖关系是强制性的,Felix将显示一个很好的错误概述,这些依赖关系链如何冲突,但是对于可选的依赖关系,它不会。

有没有一种方法,我可以得到这些信息的可选依赖?

+0

作为一个猴子补丁,我已经从CXF包中的包导入中删除了'可选'修饰符。显然维护修改后的CXF捆绑并不理想。 –

回答

0

正如您所建议的,当可选软件包导入无法解析时,Felix不打印错误消息,因为没有错误...因为它是可选的。

如果您知道将提供软件包的软件包的身份,请安装并启动该软件包。这将强制显示您想要诊断的错误消息。

顺便说一下,它看起来像你正在处理设计不佳的捆绑。如果它有一个可选的导入,那么它不应该为该包中的类型抛出CNFE。它确实表示导入应该是强制性的,而不是可选的。