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

使用Jersey发送JSON POST请求时出现CommonConfig初始化方法不存在异常

问题根因

你遇到的java.lang.NoSuchMethodError是典型的依赖版本冲突+命名空间不兼容问题:Jersey 3.x版本全面切换到了jakarta.ws.rs命名空间,而你同时引入了旧版javax.ws.rs-api 2.0和新版jakarta.ws.rs-api 3.0,再加上重复声明的jackson-databind版本,导致类加载时加载的CommonConfig类版本不匹配,缺少对应的构造方法。

修复步骤
  • 清理不兼容的依赖,删除build.gradle中旧的javax命名空间ws.rs依赖:
    移除这一行:
    implementation group: 'javax.ws.rs', name: 'javax.ws.rs-api', version: '2.0'
    
    如果你的服务端是基于javax.ws.rs的旧版本Jersey 2.x实现,则反过来删除jakarta.ws.rs的依赖,同时把jersey-client版本降到2.x系列,保证客户端和服务端命名空间一致。
  • 统一jackson-databind版本,删除重复的版本声明:
    你同时声明了2.0.1和2.11.1两个版本的jackson-databind,保留高版本的implementation 'com.fasterxml.jackson.core:jackson-databind:2.11.1'即可,删除低版本的声明。
  • 添加Jersey配套的JSON序列化依赖:
    Jersey需要配套的jackson provider来支持实体类的JSON序列化,添加和你jersey-client版本一致的依赖:
    implementation group: 'org.glassfish.jersey.media', name: 'jersey-media-json-jackson', version: '3.0.0'
    
  • 同步调整代码的导入路径:
    所有ws.rs相关类的导入都要和你保留的命名空间保持一致,用jakarta就全部导入jakarta.ws.rs.*下的类,用javax就全部导入javax.ws.rs.*下的类,不要混合导入。
  • 清理构建缓存重新编译:
    执行./gradlew clean build(Windows系统执行gradlew.bat clean build)清理旧的构建产物,避免缓存影响。
额外验证点
  • 确认GameState类以及它的内部类PiecesOnBoardSer、PiecesBeyondBoardSer都提供了公共无参构造方法和对应属性的get/set方法,否则Jackson序列化时会报错。
  • 可以先手动用ObjectMapper把GameState实例转成JSON字符串,确认序列化结果符合预期后再发起Jersey请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:06:02