0

我正在尝试将 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)但没有运气

你能帮我解决这个问题吗?

4

1 回答 1

1

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

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

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

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

于 2014-05-02T06:36:51.650 回答