0

我在 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:加载程序约束违规:加载程序(在 java.lang.ClassLoader.findBootstrapClass 中为名称为“org/omg/CORBA/ORB”的不同类型预先启动加载的实例......

4

2 回答 2

1

可能 openorb 正在使用它自己的org.omg.CORBA包的内部副本,但是您自己的包(我认为它正在以某种方式调用 openorb)是org.omg.CORBA从系统包中导入的(这意味着他们从 rt.jar 中获取了包)。

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

  • openorb 需要包含org.omg.CORBA在它的Import-Package头文件中,以便它从 rt.jar 而不是它自己的内部副本中获取该包;或者...
  • 您的捆绑包需要导入org.omg.CORBA由 openorb 导出的副本...希望它以例如 1.0.0 的版本导出它,以便您的捆绑包可以说Import-Package: org.omg.CORBA;version="[1.0.0,2.0.0)"
于 2011-06-28T00:04:29.733 回答
0

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

于 2013-12-06T07:07:59.230 回答