【问题标题】:org.osgi.framework.BundleException: Could not resolve module: org.eclipse.jetty.plusorg.osgi.framework.BundleException:无法解析模块:org.eclipse.jetty.plus
【发布时间】:2019-02-25 05:47:25
【问题描述】:

从 Karaf 缓存日志中,当我在 karaf 中部署捆绑包时,我多次收到以下错误

!ENTRY org.eclipse.jetty.jndi 4 0 2019-02-21 16:27:11.500
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: Could not resolve module: org.eclipse.jetty.jndi [77]
  Unresolved requirement: Import-Package: javax.mail; version="[1.4.0,2.0.0)"

    at org.eclipse.osgi.container.Module.start(Module.java:444)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1634)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1614)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1585)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1528)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)

【问题讨论】:

    标签: java osgi osgi-bundle osgi-fragment


    【解决方案1】:

    捆绑包org.eclipse.jetty.jndi 依赖于javax.mail; version="[1.4.0,2.0.0)"。出现此错误的原因有 2 个。

    1. 没有一个 Bundle 正在导出 javax.mail 或主机没有将包 javax.mail 添加为 SYSTEM_PACKAGE。
    2. 主机已将javax.mail 添加为SYSTEM_PACKAGE,但版本可能不在1.4.0 和2.0.0 之间。

    P.S : 这里的主机是Equinox

    【讨论】:

    • javax.mail 不是 Java SE 标准定义的包,因此默认情况下不会从 OSGi 系统包中导出。
    • 是的,默认情况下只导出 java.* 包。除了java.* 之外的任何其他包都应该明确导出。
    • 不,这是不正确的。该框架还在javax 命名空间下导出标准Java SE 包,例如javax.xml.bind。关键是,javax.mail 不是 Java SE 标准包,它没有随任何版本的 JDK 一起提供。
    猜你喜欢
    • 1970-01-01
    • 2022-10-31
    • 2017-12-11
    • 2018-11-10
    • 2020-04-15
    • 2021-07-14
    • 2021-11-07
    • 2020-12-02
    • 2021-07-21
    相关资源
    最近更新 更多