【问题标题】:openorb and jdk conflict in OSGIOSGI 中的 openorb 和 jdk 冲突
【发布时间】:2011-09-21 10:13:14
【问题描述】:
我在 osgi 中使用 openorb 时遇到以下异常。
我正在使用 openorb-1.3.1.jar 和 jdk1.6。
我认为 jdk 中的 openorb-1.3.1.jar 和 rt.jar 都包含许多导致问题的重复项。
例如,由于 rt.jar 和 openorb-1.3.1.jar 中都存在 org.omg.CORBA.ORB 类,因此发生了以下错误。
请提出解决问题的正确方法。
例外是,
java.lang.LinkageError: 加载器
违反约束:加载程序(实例
之前发起的
加载具有名称的不同类型
“org/omg/CORBA/ORB”在
java.lang.ClassLoader.findBootstrapClass....
【问题讨论】:
标签:
java
osgi
corba
classloader
openorb
【解决方案1】:
如果您使用 karaf 作为您的 OSGi 容器。你可以编辑你的 karaf“jre.properties”,它应该在 /karaf/etc 中。删除openorb中已经存在的包
【解决方案2】:
可能 openorb 正在使用它自己的 org.omg.CORBA 包的内部副本,但是您自己的包——我认为它正在以某种方式调用 openorb——已经从系统包中导入了org.omg.CORBA(这意味着他们得到了那个包)来自 rt.jar)。
如果没有更多信息,很难开出单一的治疗方法,但原则是确保 openorb 和所有其他捆绑包从同一位置加载 org.omg.CORBA。这意味着:
- openorb 需要在其
Import-Package 标头中包含org.omg.CORBA,以便它从rt.jar 而不是它自己的内部副本中获取该包;或者...
- 您的捆绑包需要导入由 openorb 导出的
org.omg.CORBA 的副本...希望它使用一个版本导出它,例如1.0.0 所以你的包可以说Import-Package: org.omg.CORBA;version="[1.0.0,2.0.0)"