You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

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。
  • 强制统一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'
      }
      
  • 或者直接显式引入高版本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执行mvn clean install,Gradle执行gradle clean build,然后再启动Spring Boot项目,应该就能解决这个问题啦!

备注:内容来源于stack exchange,提问作者AlexNazemi

火山引擎 最新活动