【问题标题】:Resolve a dependency on package sun.misc with Tycho使用 Tycho 解决对软件包 sun.misc 的依赖
【发布时间】:2013-12-09 11:06:58
【问题描述】:

我尝试将基于 Buckminster 的构建转换为 Tycho (0.19.0)。在我们的(镜像)目标平台中,我们有来自 http://lmax-exchange.github.io/disruptor/ 的包 com.lmax.disruptor,它导入包 "sun.misc"

当我尝试构建我们自己的包(取决于 com.lmax.disruptor)时,我得到:

[错误] 缺少要求:com.lmax.disruptor 3.2.0 需要 'package sun.misc 0.0.0' 但找不到

我查看了许多 Tycho 教程,但没有一个包含这样的依赖项。有没有办法从执行的 JRE 中导入该包?

解决方法:

当我将中断包作为库添加到我的包中时,它可以正常工作。但这更像是一种解决方法,因为我还有其他依赖于它的包。

【问题讨论】:

    标签: java tycho


    【解决方案1】:

    问题是没有一个标准的 OSGi 执行环境暴露包 sun.misc,所以使用这个包的包在标准的 OSGi 运行时不能工作。这就是构建失败告诉你的。

    因此,如果您有一个标准的 OSGi 运行时(请注意,Equinox 在此处是特殊的,因为它的 osgi.compatibility.bootdelegation 选项),您需要告诉 OSGi 运行时从引导类路径公开其他包。一种方法(这样 Tycho 也能理解您的意图)是构建一个系统包片段,该片段声明一个 Export-Packagesun.misc

    据报道这是可行的,但我自己没有尝试过。

    【讨论】:

    • 我创建了一个新片段并将其添加到目标平台。之后包 sun.misc 就可以解决了。非常感谢。
    • this answer 中解释了创建此片段以供第谷使用的一种方法。
    【解决方案2】:

    最简单的选择是将 diffplug 提供的预构建系统包中的一个包含在您的依赖项中: https://search.maven.org/artifact/com.diffplug.osgi/com.diffplug.osgi.extension.sun.misc/0.0.0/jar

    更多信息https://github.com/diffplug/osgiX

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-12
      • 2012-11-09
      • 2013-04-20
      • 2022-01-14
      • 2020-12-11
      相关资源
      最近更新 更多