使用Tycho解决对sun.misc包的依赖性

时间:2013-12-09 11:06:59

标签: java tycho

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

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

  

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

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

解决方法:

当我将disruptor包作为库添加到我的包中时,它可以正常工作。但这种接缝更像是一种解决方法,因为我也会有其他依赖它的捆绑包。

2 个答案:

答案 0 :(得分:1)

问题是没有一个标准OSGi执行环境公开包sun.misc,因此使用此包的bundle不能在标准OSGi运行时上运行。这就是构建失败告诉你的。

因此,如果您有一个标准的OSGi运行时(请注意Equinox因其osgi.compatibility.bootdelegation选项而在这里很特别),您需要告诉OSGi运行时从引导类路径中公开其他包。一种方法(使Tycho也理解你的意图)是建立一个系统包片段,声明Export-Package sun.misc

据报道这有效,但我自己也没试过。

答案 1 :(得分:0)

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

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