我尝试将基于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包作为库添加到我的包中时,它可以正常工作。但这种接缝更像是一种解决方法,因为我也会有其他依赖它的捆绑包。
答案 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