【问题标题】:How to troubleshooting Apache Felix not resolving an optional dependency?如何解决 Apache Felix 无法解决可选依赖项的问题?
【发布时间】:2016-08-15 17:58:21
【问题描述】:

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

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

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

【问题讨论】:

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

标签: java osgi apache-felix


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-04-10
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多