我在 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 中。
请提出解决问题的正确方法。
异常(exception)情况是这样的,
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....
最佳答案
可能 openorb 正在使用它自己的 org.omg.CORBA
包的内部副本,但是您自己的 bundle (我认为它以某种方式调用 openorb)已经导入了 org .omg.CORBA
来自系统包(这意味着他们从 rt.jar 中获取)。
如果没有更多信息,很难给出单一解决方案,但原则是确保 openorb 和所有其他包从同一位置加载 org.omg.CORBA。这意味着:
- openorb 需要在其
Import-Package
header 中包含org.omg.CORBA
,以便它从 rt.jar 获取该包而不是其自己的内部副本;或者... - 您的 bundle 需要导入由 openorb 导出的
org.omg.CORBA
副本...希望它能够导出一个版本,例如1.0.0 所以你的包可以说Import-Package: org.omg.CORBA;version="[1.0.0,2.0.0)"
关于java - OSGI中openorb和jdk冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6457958/