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

创建JIB镜像时出现Jackson getReadCapabilities方法不存在错误

解决Jib BuildTar任务的Jackson方法缺失问题

环境配置

  • jib-gradle 3.2.1
  • gradle 6.6
  • java 8

构建脚本配置

主build.gradle

buildscript {
    dependencies {
        classpath("com.fasterxml.jackson.core:jackson-databind") {
            version{ strictly("2.13.2") }
        }
        classpath("com.fasterxml.jackson.core:jackson-core") {
            version{ strictly("2.13.2") }
        }
        classpath "gradle.plugin.com.google.cloud.tools:jib-gradle-plugin:3.2.1"
    }
}

模块gradle配置

apply plugin: "com.google.cloud.tools.jib"

错误信息

执行jibBuildTar任务时报错:

Caused by: java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonParser.getReadCapabilities()Lcom/fasterxml/jackson/core/util/JacksonFeatureSet;
        at com.fasterxml.jackson.databind.DeserializationContext.<init>(DeserializationContext.java:212)
        at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.<init>(DefaultDeserializationContext.java:50)
        at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext$Impl.<init>(DefaultDeserializationContext.java:391)
        at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext$Impl.createInstance(DefaultDeserializationContext.java:413)
        at com.fasterxml.jackson.databind.ObjectMapper.createDeserializationContext(ObjectMapper.java:4737)
        at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4666)
        at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3666)
        at com.google.cloud.tools.jib.json.JsonTemplateMapper.readJsonFromFile(JsonTemplateMapper.java:72)
        at com.google.cloud.tools.jib.plugins.common.globalconfig.GlobalConfig.readConfig(GlobalConfig.java:49)
        at com.google.cloud.tools.jib.plugins.common.globalconfig.GlobalConfig.readConfig(GlobalConfig.java:39)
        at com.google.cloud.tools.jib.gradle.BuildTarTask.buildTar(BuildTarTask.java:136)

已排查情况

  • 检查依赖图谱确认无其他Jackson版本引入
  • 已强制指定包含目标方法的Jackson 2.13.2版本
  • 普通build任务可正常执行

解决方案

1. 全局强制Jackson版本到buildscript配置

单个依赖的strictly配置可能无法覆盖Gradle自身携带的Jackson版本,需要在buildscript中添加全局分辨率策略,确保所有Jackson相关依赖都强制使用2.13.2:

buildscript {
    repositories {
        mavenCentral() // 确保仓库配置正确
    }
    dependencies {
        classpath "gradle.plugin.com.google.cloud.tools:jib-gradle-plugin:3.2.1"
        classpath "com.fasterxml.jackson.core:jackson-core:2.13.2"
        classpath "com.fasterxml.jackson.core:jackson-databind:2.13.2"
        classpath "com.fasterxml.jackson.core:jackson-annotations:2.13.2" // 补充缺失的annotations依赖
    }
    configurations.all {
        resolutionStrategy {
            force "com.fasterxml.jackson.core:jackson-core:2.13.2"
            force "com.fasterxml.jackson.core:jackson-databind:2.13.2"
            force "com.fasterxml.jackson.core:jackson-annotations:2.13.2"
        }
    }
}

2. 清理Gradle缓存

Gradle缓存可能残留旧版本Jackson文件,删除缓存目录后重新构建:

# Linux/macOS
rm -rf ~/.gradle/caches

# Windows
rd /s /q %USERPROFILE%\.gradle\caches

3. 检查Gradle启动参数

确认GRADLE_OPTS或其他启动参数中没有引入旧版本Jackson的类路径,避免类加载冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:25:20