【问题标题】:Error after converting org.pbjar library to OSGi bundle将 org.pbjar 库转换为 OSGi 包后出错
【发布时间】:2014-06-17 20:34:53
【问题描述】:

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

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

【问题讨论】:

  • 我也遇到了同样的问题,所以我自己拿了源码,自己做了一个jar。
  • 是否只需要将上述指令放在每个 SwingX 模块的 pom.xml 中即可使其运行良好?我的意思是 swingX 项目是否需要其他第三方库?

标签: osgi bundle equinox karaf


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢,我已经使用第一种方法解决了这个问题,在 Karaf 3.0.0 的 etc/config.properties 中添加以下语句:com.sun.java.swing
猜你喜欢
  • 1970-01-01
  • 2018-01-16
  • 2014-04-29
  • 2023-04-03
  • 2011-06-09
  • 2011-10-21
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
相关资源
最近更新 更多