You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gson构造实例报错:JsonTreeReader无法赋值给JsonReader

解决Gson构造实例时抛出的java.lang.VerifyError问题

嘿,这个VerifyError问题我之前帮好几个开发者排查过,本质上是JVM在验证字节码时发现了类型不匹配的问题,大概率和依赖冲突、版本不兼容这类常见坑有关,咱们一步步来解决:

  • 排查Gson依赖冲突
    最常见的原因就是项目里同时引入了多个版本的Gson,导致类加载时出现不一致的情况。你可以用Maven命令生成依赖树,找出重复的Gson依赖:

    mvn dependency:tree -Dincludes=com.google.code.gson:gson
    

    如果输出里显示多个Gson版本,就在pom.xml里把冲突的旧版本依赖排除掉,比如某个第三方库自带了旧版Gson,就这么写:

    <dependency>
        <groupId>冲突依赖的groupId</groupId>
        <artifactId>冲突依赖的artifactId</artifactId>
        <version>对应版本号</version>
        <exclusions>
            <exclusion>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
  • 检查Gson jar包是否损坏
    有时候Maven下载的jar包可能不完整,导致字节码验证失败。你可以手动删除本地Maven仓库里的Gson目录,然后重新让Maven下载:

    • 本地仓库路径:Linux/Mac是~/.m2/repository/com/google/code/gson/gson,Windows是C:\Users\你的用户名\.m2\repository\com\google\code\gson\gson
    • 删除后执行mvn clean install重新下载依赖
  • 排查类加载器冲突
    如果是Web项目(比如用Tomcat),要检查是否在多个位置放置了Gson jar包——比如WEB-INF/lib和Tomcat的全局lib目录同时存在Gson包,这会导致不同类加载器加载同一个类,引发验证错误。只保留一个位置的Gson包即可。

  • 确认JDK与Gson版本兼容性
    Gson的新版本对JDK有要求,比如Gson 2.9及以上需要JDK 1.8+,如果你的项目用的是JDK 1.7或更低版本,就会出现这类错误。你可以:

    • 升级项目的JDK版本到符合要求的版本
    • 或者降级Gson到和你的JDK兼容的版本(比如JDK 1.7用Gson 2.8.9)

如果以上方法都试过还是不行,可以尝试换一种构造Gson实例的方式,比如用new GsonBuilder().create()代替直接new Gson(),不过核心问题还是要先解决依赖和类加载的矛盾。

内容的提问来源于stack exchange,提问作者Jamie Counsell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:49:19