Class Eclipse RAP 和 WebLogic 12.2.1.3 的加载问题

Class loading issue with Eclipse RAP and WebLogic 12.2.1.3

在 WebLogic 12.2.1.3 上部署 Eclipse RAP war 文件时,我们遇到以下错误;

java.lang.LinkageError:违反加载器约束:加载器先前启动了名称为 "org/aopalliance/aop/Advice" 的不同类型的加载

在执行一些分析后,我们确定问题是由于 WebLogic 12.2.1.3 在 org.glassfish.hk2.external.aopalliance-repackaged.jar 中附带 oracle_common\modules,并且这与com.springsource.org.aopalliance_1.0.0.jar,在我们 WAR 文件的 WEB-INF\plugins 目录中。

我们已经尝试了一些方法来补救这个问题,但到目前为止还没有成功;

从 oracle_common\modules 中删除了 org.glassfish.hk2.external.aopalliance-repackaged.jar(WebLogic 部署但随后自行关闭)

从 WAR 文件中删除 com.springsource.org.aopalliance_1.0.0.jar(WebLogic 启动,但不在 WAR 中部署包文件)

更新 WAR 文件中的 weblogic.xml 为;

<container-descriptor>
  <prefer-web-inf-classes>false</prefer-web-inf-classes>
  <prefer-application-packages>
    <package-name>org.aopalliance.*</package-name>
  </prefer-application-packages>
</container-descriptor>

将com.springsource.org.aopalliance_1.0.0.jar复制到WAR的WEB-INF\lib文件夹中,进行上述weblogic.xml修改

对于我们可以尝试的其他更改的任何建议,我们将不胜感激。

非常感谢

麦克

尝试更新 war 文件中的 launch.ini,将 osgi.parentClassloader 和 osgi.contextClassLoaderParent 的值设置为 ext :-

osgi.parentClassloader=ext
osgi.contextClassLoaderParent=ext

干杯