同配置下Maven构建Weblogic部署失败:NoSuchMethodError求助
核对Maven本地仓库依赖版本
两台机器的Maven本地仓库里,com.fasterxml.jackson.core相关jar包(jackson-databind、jackson-core、jackson-annotations)可能存在版本差异——哪怕pom.xml配置一致,本地缓存的依赖也可能不一样。
执行命令对比依赖树:mvn dependency:tree -Dincludes=com.fasterxml.jackson.core若版本不一致,删除本地仓库的Jackson目录(
~/.m2/repository/com/fasterxml/jackson)后重新构建。排查Weblogic全局类加载干扰
Weblogic本身可能内置了旧版Jackson,就算配置了prefer-application-packages,系统类加载器也可能提前加载旧类,覆盖应用里的版本。- 检查Weblogic域的
$DOMAIN_HOME/lib目录,若有Jackson相关jar包,要么移除要么替换为应用使用的版本。 - 调整
weblogic-application.xml,补充资源优先加载配置:<prefer-application-packages> <package-name>com.fasterxml.jackson.*</package-name> </prefer-application-packages> <prefer-application-resources> <resource-name>META-INF/services/com.fasterxml.jackson.databind.Module</resource-name> <resource-name>com/fasterxml/jackson/**</resource-name> </prefer-application-resources>
- 检查Weblogic域的
固定Jackson依赖版本
若pom.xml里Jackson用了快照版(比如2.13.0-SNAPSHOT)或范围版本(比如[2.13,)),两台机器可能拉取到不同的包。把版本改成具体稳定版,比如2.13.4,避免动态解析带来的差异。检查Maven配置与系统环境差异
对比两台机器的~/.m2/settings.xml,确保镜像、profile等配置完全一致;同时检查MAVEN_OPTS、JAVA_HOME等系统环境变量,确认没有差异。验证EAR包内的实际依赖版本
解压两台机器生成的EAR包,查看WEB-INF/lib(或EJB模块的lib目录)下Jackson jar包的META-INF/MANIFEST.MF文件里的Implementation-Version属性,确认版本完全一致。
内容的提问来源于stack exchange,提问作者Manu

