如何对 Apache Felix 未解析可选依赖项进行故障排除?

How to troubleshooting Apache Felix not resolving an optional dependency?

我有一个带有 Apache Felix 和大量依赖项的 OSGi 设置。这些依赖项之一 (Apache CXF) 对 Spring (org.springframework.context.support) 中的包具有可选依赖项。此依赖项未得到解决(未在 Felix web UI 的 "Imported Packages" 中列出)。这会在我的应用程序中导致 class not found 异常。

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

有没有办法获取可选依赖项的信息?

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

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

顺便说一句,您似乎在处理设计不佳的捆绑包。如果它有一个可选的导入,那么它不应该为该包中的类型抛出 CNFE。它确实表明导入应该是强制性的,而不是可选的。