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

SpringBoot 2.x升级至3.1.0后Openapitools执行openApiGenerate任务报错求助

问题:SpringBoot 3.1.0升级后Openapitools openApiGenerate任务报错

将SpringBoot从2.x版本升级至3.1.0版本后,执行Gradle任务openApiGenerate时出现NoSuchMethodError错误,具体栈信息如下:

Caused by: java.lang.NoSuchMethodError: 'com.fasterxml.jackson.core.io.ContentReference com.fasterxml.jackson.dataformat.yaml.YAMLFactory._createContentReference(java.lang.Object)'
at com.fasterxml.jackson.dataformat.yaml.YAMLFactory.createGenerator(YAMLFactory.java:479)
at com.fasterxml.jackson.dataformat.yaml.YAMLFactory.createGenerator(YAMLFactory.java:15)
at com.fasterxml.jackson.databind.ObjectMapper.createGenerator(ObjectMapper.java:1164)
at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:3742)
at org.openapitools.codegen.serializer.SerializerUtils.toYamlString(SerializerUtils.java:38)
at org.openapitools.codegen.DefaultCodegen.generateYAMLSpecFile(DefaultCodegen.java:7094)
at org.openapitools.codegen.languages.JavaClientCodegen.postProcessSupportingFileData(JavaClientCodegen.java:1129)
at org.openapitools.codegen.DefaultGenerator.buildSupportFileBundle(DefaultGenerator.java:814)
at org.openapitools.codegen.DefaultGenerator.generate(DefaultGenerator.java:917)

已尝试降级Jackson版本,但依赖树显示已使用旧版本的情况下问题依旧。当前openApiGenerate任务定义如下:

openApiGenerate {
    generatorName = "java"
    inputSpec = "$projectDir/$openApiDir"
    outputDir = "$buildDir"
    library = "template"
    apiPackage = "myapi.api"
    modelPackage = "mymodel.model"
    invokerPackage = "myinvoker.invoker"
    generateModelTests = false
    generateApiTests = false
    generateApiDocumentation = false
    generateModelDocumentation = false
    configOptions = [
            useSpringBoot3: "true",
            sourceFolder: "$generatedBaseDir",
    ]
}

解决提示

  • 检查Openapitools Gradle插件版本:确保使用的Openapitools插件版本完全兼容SpringBoot 3.1.0,建议升级到最新稳定版(如6.6.0及以上),旧版本插件可能未适配SpringBoot 3.x对应的Jackson版本。
  • 强制统一Jackson依赖版本:通过Gradle的resolutionStrategy强制所有模块使用与SpringBoot 3.1.0匹配的Jackson版本(SpringBoot 3.1.0默认Jackson版本为2.15.2),避免插件引入的Jackson版本与SpringBoot依赖冲突:
    configurations.all {
        resolutionStrategy {
            force 'com.fasterxml.jackson.core:jackson-core:2.15.2'
            force 'com.fasterxml.jackson.core:jackson-databind:2.15.2'
            force 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.2'
        }
    }
    
  • 排查插件类加载隔离问题:Openapitools插件可能使用了独立的类加载器,导致降级的Jackson版本未被插件加载。可以尝试在Gradle脚本的buildscript块中显式指定插件依赖的Jackson版本,确保插件使用的Jackson版本与项目一致:
    buildscript {
        dependencies {
            classpath "org.openapitools:openapi-generator-gradle-plugin:6.6.0"
            classpath "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.2"
        }
    }
    
  • 更换Openapitools生成器库:当前使用的library = "template"可能存在兼容性问题,尝试切换为spring-boot库,该库专门适配SpringBoot环境:
    library = "spring-boot"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:35:35