我在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...。

最佳答案

openorb可能正在使用其自己的org.omg.CORBA软件包内部副本,但是您自己的捆绑软件-我认为是以某种方式调用openorb-已从系统捆绑软件导入org.omg.CORBA(这意味着它们是从rt获得的)。罐)。

没有更多信息,很难开出一个单一的解决方案,但是原理是确保openorb和所有其他捆绑包从同一位置加载org.omg.CORBA。这意味着:


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

09-27 17:12