容器jar包冲突问题如何解决?记一次真实的案例(weblogic)

时间:2024-04-09 08:16:47

容器jar包冲突问题如何解决?记一次真实的案例(weblogic)

问题描述

开发时新增了jar包,本地Tomcat运行没有问题,当把增量包部署到测试服务器(使用weblogic)后启动应用出现如下错误提示:

java.lang.LinkageError: loader constraint violation: loader (instance of weblogic/utils/classloaders/ChangeAwareClassLoader) previously initiated loading for a different type with name "org/w3c/dom/TypeInfo"

错误分析

因为本地运行正常,本地与测试服务器除web容器不同外其他运行环境完全一致,再看报错信息,怀疑是weblogic自带的jar包与项目的jar包冲突。(我也不知道技术大佬们怎么想的,开发、测试、生产环境竟然不用同一种web容器)

报错信息

在项目工程中随便一个类文件下,把org/w3c/dom/TypeInfo改成org.w3c.dom.TypeInfo,查看这个jar的信息:(Crtl+TypeInfo)。找到冲突的jar包(xmlbeans-2.3.0.jar)。

容器jar包冲突问题如何解决?记一次真实的案例(weblogic)

容器jar包冲突问题如何解决?记一次真实的案例(weblogic)解决方案(三种)

1、删除项目工程下jar包

容器jar包冲突问题如何解决?记一次真实的案例(weblogic)

因为项目的weblogic.xml配置是优先加载项目下的jar包,所以删除项目工程下的xmlbeans-2.3.0.jar 包,然后 重新部署 或 重启应用。

[[email protected] ~/sbin]$ sh redeploy.sh Mobileproj

容器jar包冲突问题如何解决?记一次真实的案例(weblogic)

2、删除weblogic下的 相关的 xmlbean jar包

不建议用这种方式,因为有可能其他项目在用weblogic下的这个jar包,而且查找weblogic下的jar包冲突信息也比较费时。

3、配置weblogic.xml

删除优先加载的项目jar的配置或是设置改为false,不建议使用,因为可能其他jar包夜存在冲突。

容器jar包冲突问题如何解决?记一次真实的案例(weblogic)