Spring 5.3.14升级后遭遇java.lang.NoSuchMethodError问题求助
问题解决:Spring 5.3.14升级后BeanExpressionException报错
问题原因
NoSuchMethodError 本质是依赖版本冲突:Spring 5.3.14的org.springframework.expression模块(即spring-expression jar)需要对应版本的类结构,但项目中存在旧版本的spring-expression jar,或是其他依赖间接引入了不匹配版本的该jar,导致类加载时找不到目标构造方法StandardTypeConverter(java.util.function.Supplier)。
解决步骤
- 排查依赖树,定位冲突的spring-expression版本
Maven项目执行命令:
Gradle项目执行命令:mvn dependency:tree | grep spring-expressiongradle dependencies | grep spring-expression - 排除冲突依赖
Maven项目在pom.xml中找到引入冲突版本的依赖,添加排除配置:
Gradle项目添加exclude规则:<dependency> <groupId>xxx</groupId> <artifactId>xxx</artifactId> <version>xxx</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> </exclusion> </exclusions> </dependency>implementation('xxx:xxx:xxx') { exclude group: 'org.springframework', module: 'spring-expression' } - 强制统一spring-expression版本
Maven通过dependencyManagement锁定版本:
Gradle通过force强制指定版本:<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>5.3.14</version> </dependency> </dependencies> </dependencyManagement>implementation('org.springframework:spring-expression:5.3.14') { force = true } - 清理并重新构建项目
Maven执行:
Gradle执行:mvn clean installgradle clean build
内容的提问来源于stack exchange,提问作者VKR
相关产品推荐
相关产品推荐

