OSGI中的openorb和jdk冲突

时间:2011-06-23 17:10:58

标签: java osgi corba classloader openorb

我在osgi中使用openorb获得了波纹管异常 我正在使用openorb-1.3.1.jar和jdk1.6 我认为jdk中的openorb-1.3.1.jar和rt.jar都包含许多重复项,导致问题。
例如,发生波纹管错误,因为org.omg.CORBA.ORB类在rt.jar和openorb-1.3.1.jar中都存在。
请提出解决问题的正确方法。

例外是,

  

java.lang.LinkageError:loader   约束违规:loader(实例   先发制人   加载具有名称的其他类型   “org / omg / CORBA / ORB”at   java.lang.ClassLoader.findBootstrapClass ....

2 个答案:

答案 0 :(得分:1)

可能openorb使用自己的org.omg.CORBA包的内部副本,但你自己的包 - 我认为是以某种方式调用openorb - 从系统包中导入org.omg.CORBA(意思是他们从rt.jar获得了一个。

如果没有更多信息,很难规定单一治疗方法,但原则是确保openorb和所有其他软件包从同一个地方加载org.omg.CORBA。这意味着:EITHER:

  • openorb需要在org.omg.CORBA标头中包含Import-Package,以便从rt.jar获取该包而不是其自己的内部副本; OR ...
  • 您的捆绑包需要导入由openorb导出的org.omg.CORBA副本...希望它以例如版本导出它1.0.0所以您的捆绑包可以说Import-Package: org.omg.CORBA;version="[1.0.0,2.0.0)"

答案 1 :(得分:0)

如果您使用karaf作为OSGi容器。你可以编辑karaf“jre.properties”,它应该是/ karaf / etc。删除已在openorb中的包