启动Spring Boot应用时出现GsonBuilder错误的原因及解决方法
解决Spring Boot运行时Gson的NoSuchMethodError问题
这个问题我之前帮不少开发者排查过,本质就是Gson版本不兼容或者依赖冲突搞出来的事儿,咱们拆解来看:
错误原因
- Gson版本过低:
GsonBuilder.setLenient()这个方法是在Gson 2.3版本才新增的,如果你的项目里用的Gson版本低于2.3,自然找不到这个方法。 - 依赖版本冲突:项目里可能同时引入了多个不同版本的Gson(比如某个第三方依赖自带了旧版Gson,和你手动引入的新版,或者Spring Boot默认依赖的版本冲突),JVM加载了旧版的Gson类,导致方法缺失。
- Spring Boot依赖传递覆盖:Spring Boot的一些starter(比如
spring-boot-starter-web)会默认引入兼容的Gson版本,但如果你手动在pom.xml/build.gradle里指定了更低的Gson版本,就会覆盖掉默认的兼容版本,引发错误。
解决办法
1. 统一并升级Gson版本
先排查项目里的依赖树,找出所有Gson的引入来源:
- Maven项目执行命令:
mvn dependency:tree - Gradle项目执行命令:
gradle dependencies
然后在依赖管理里强制指定一个2.3及以上的稳定版本(比如2.10.1,这是目前比较新的稳定版):
Maven示例
<dependencyManagement> <dependencies> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> </dependency> </dependencies> </dependencyManagement>
Gradle示例
dependencyResolutionManagement { resolutions { force 'com.google.code.gson:gson:2.10.1' } }
2. 排除冲突的旧版Gson
如果是某个第三方依赖带进来的旧版Gson,直接在该依赖里排除Gson:
Maven示例
<dependency> <groupId>第三方库的groupId</groupId> <artifactId>第三方库的artifactId</artifactId> <exclusions> <exclusion> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> </exclusion> </exclusions> </dependency>
3. 对齐Spring Boot版本
如果你的Spring Boot版本比较老旧,建议升级到稳定的新版本(比如2.7.x或者3.x系列),新版本的Spring Boot会默认依赖兼容的Gson版本,能减少这类依赖冲突问题。
控制台错误信息
. ____ _ __ _ _ /\ / ' __ _ () __ __ _ \ \ \ \ ( ( )__ | '_ | '_| | ...
内容的提问来源于stack exchange,提问作者A j
相关产品推荐
相关产品推荐

