java - OSGI中openorb和jdk冲突

标签 java osgi corba classloader openorb

我在 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/

相关文章:

java - 合并和排序列表

java - ANTLR 将部分字符串视为关键字

java - Amdatu:如何使 ExceptionMapper (@Provider) 工作?

java - 从一类 Corba 创建多个服务器时出现问题

java - Jboss EAP 7/Wildfly 10 中的 jacorb.orb 警告

java - 如何使用 Java 从 KML 即时创建 KMZ 文件

java.sql.SQLException : No suitable driver found for jdbc:mysql//127. 0.0.1 :3306/java Error - JDK 1. 8,mysql连接器8.0.12

java - 由于 org.eclipse.core.runtime 无法启动 eclipse

java - Gradle 构建文件内的 JAR list 中的 "-includeresource"

c++ - 是否可以传递 long 而不是 CORBA::Long 等?