将org.pbjar库转换为OSGi包后出错

时间:2014-05-01 11:05:18

标签: osgi bundle equinox karaf

我试图将org.pbjar.jxlayer库转换为OSGi包,我已经成功了但是当我尝试在Karaf容器中安装它时,容器声称这需要一个缺少的需求捆绑:

无法解决312.0:缺少要求[312.0] osgi.wiring.package; (osgi.wiring.package = com.sun.java.swing)

我还将javax.swing放在bundle import指令中,但问题仍然存在 我更改了JDK的版本(1.5,1.6,1.7),但没有运气

你能帮我解决一下这个问题。

1 个答案:

答案 0 :(得分:1)

所以你的bundle试图导入com.sun.java.swing包,当框架试图解析bundle时,它找不到任何导出这个包的人。这就是错误消息试图告诉你的内容。

在Java 7中(我没有检查过旧版本),这个包是JRE的一部分。这意味着将它暴露给bundle的最简单方法是让框架将其导出为“额外”包。您可以在启动框架时配置系统属性:

-Dorg.osgi.framework.system.packages.extra=com.sun.java.swing

另一种选择是将此软件包嵌入到软件包中。在这种情况下,您不需要通过框架导出它(这在您无法重新配置框架的情况下很方便),并且导入包也可以从您的包中删除。如果你最终有许多需要这个的捆绑包,这可能不那么方便或好,因为你最终会得到包的许多私人副本(而不是每个人共享一个)。