我在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 ....
答案 0 :(得分:1)
可能openorb使用自己的org.omg.CORBA
包的内部副本,但你自己的包 - 我认为是以某种方式调用openorb - 从系统包中导入org.omg.CORBA
(意思是他们从rt.jar获得了一个。
如果没有更多信息,很难规定单一治疗方法,但原则是确保openorb和所有其他软件包从同一个地方加载org.omg.CORBA
。这意味着:EITHER:
org.omg.CORBA
标头中包含Import-Package
,以便从rt.jar获取该包而不是其自己的内部副本; OR ... 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中的包