SpringBoot集成MichaelTheLin的Spotify API时出现Gson相关java.lang.NoSuchMethodError问题求助
SpringBoot集成MichaelTheLin的Spotify API时出现Gson相关java.lang.NoSuchMethodError问题求助
嘿,我之前也踩过类似的依赖冲突坑,给你好好梳理下这个问题的根源和解决办法!
你遇到的java.lang.NoSuchMethodError: 'com.google.gson.JsonElement com.google.gson.JsonParser.parseString(java.lang.String)'错误,本质是Gson版本不兼容导致的:
- 你用的
spotify-web-api-java-8.4.0这个库,依赖的Gson版本需要2.8.0及以上——因为JsonParser.parseString()这个方法是Gson 2.8.0才新增的; - 但你的Spring Boot项目里,要么是自身默认引入了更低版本的Gson,要么是其他依赖通过传递性引入了旧版Gson,导致运行时JVM加载的是旧版Gson,自然找不到这个新方法。
给你几个具体的解决步骤:
先排查项目里的Gson版本:
用依赖分析命令看看实际引入的Gson版本和来源:- Maven项目执行:
mvn dependency:tree | grep gson - Gradle项目执行:
gradle dependencies | grep gson
这样能快速定位是哪个依赖带了旧版Gson。
- Maven项目执行:
强制统一Gson版本(最稳妥的办法):
根据你用的构建工具,统一指定一个兼容的高版本Gson:- Maven的话,在
pom.xml的<dependencyManagement>块里添加:<dependencyManagement> <dependencies> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> <!-- 选一个稳定的高版本就行,比如这个 --> </dependency> </dependencies> </dependencyManagement> - Gradle的话,在
build.gradle里添加:configurations.all { resolutionStrategy.force 'com.google.code.gson:gson:2.10.1' }
- Maven的话,在
或者直接显式引入高版本Gson:
直接在依赖里声明高版本Gson,覆盖传递过来的旧版本:- Maven:
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> </dependency> - Gradle:
implementation 'com.google.code.gson:gson:2.10.1'
- Maven:
最后记得修改后,清理下项目缓存再重新构建:Maven执行mvn clean install,Gradle执行gradle clean build,然后再启动Spring Boot项目,应该就能解决这个问题啦!
备注:内容来源于stack exchange,提问作者AlexNazemi




