有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

OSGI中的java openorb和jdk冲突

我在osgi中使用openorb获得以下异常
我正在使用openorb-1.3.1。jar和jdk1。6.
我认为openorb-1.3.1。jdk中的jar和rt.jar包含许多重复项,这导致了问题
例如,下面的错误发生是因为org。天啊。科尔巴。ORB类在rt.jar和openorb-1.3.1中都有。罐子
请提出解决问题的正确方法

例外情况是

java.lang.LinkageError: loader constraint violation: loader (instance of previosly initiated loading for a different type with name "org/omg/CORBA/ORB" at java.lang.ClassLoader.findBootstrapClass....


共 (2) 个答案

  1. # 1 楼答案

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

  2. # 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这样的版本导出它,这样您的bundle就可以说Import-Package: org.omg.CORBA;version="[1.0.0,2.0.0)"