今天开发时,本地测试正常 ,本地用tomcat服务器,更新到生产上报如下错误,生产采用weblogic服务器。
java.lang.LinkageError:loader constraint violation: loader (instance of weblogic/utils/classloaders/ChangeAwareClassLoader) previously initiated loading for a different type with name “javax/xml/transform/Source”
根据错误信息可以看到是由于weblogic下载项目的jar包于项目本身的jar冲突了。
javax/xml/transform/Source 就是 javax.xml.transform.Source 我们找到jar jaxrpc.jar 看到并没有Source。
看到项目的jar包中没有找到该jar包,那只有jdk中jar与weblogicjar冲突了。
我们找到jdk中rt.jar 找到了
javax.xml.transform.Source
我们 再来看看weblogic 下载的jar包 路径 :
weblogic/Oracle/Middleware/wlserver_10.3/server/lib
但是 实在没有找到webloic中的jar。
所以实在无法找到冲突的jar,就找到了一个简单粗暴的 方法,由于本项目jar不需要weblogic的依赖jar,所以找到weblogic.xml。
prefer-web-inf-classes 中true 改为false。
修改前
修改后
即将weblogic优先加载的项目jar的配置设置改为false,不在优先从weblogic加载jar包。
重启后成功解决,但是最好还是找到真正的冲突jar所在。