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

swagger-codegen-maven-plugin切换为java语言时缺失依赖报错如何解决?

问题原因
  • 使用<language>spring</language>时,Spring生态本身已内置Jackson序列化、JSR310时间处理等相关依赖,不会触发包缺失报错
  • 切换为<language>java</language>后,Swagger代码生成器默认采用Gson作为JSON序列化组件,项目未显式引入该依赖时会抛出com.google.gson包不存在的错误
  • 新增<library>restemplate</library>配置后,默认生成的代码会引入threetenbp(Java 8之前的时间API向下兼容库)作为时间处理依赖,未引入对应组件时会抛出org.threeten.bp相关包不存在的错误
解决方案

步骤1:调整插件配置(推荐)

将Java 8相关配置下沉到执行单元的configOptions中,同时新增dateLibrary参数指定使用Java 8原生时间API,避免引入过时的threetenbp依赖,调整后的插件配置参考如下:

<plugin>
    <groupId>io.swagger.codegen.v3</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <version>3.0.26</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <inputSpec>./src/main/resources/api-contract/first.json</inputSpec>
                <language>java</language>
                <library>restemplate</library>
                <output>${project.build.directory}/</output>
                <configOptions>
                    <sourceFolder>./generated-sources/</sourceFolder>
                    <java8>true</java8>
                    <interfaceOnly>true</interfaceOnly>
                    <apiPackage>com.service.api</apiPackage>
                    <modelPackage>com.service.model</modelPackage>
                    <invokerPackage>com.service.handler</invokerPackage>
                    <!-- 新增该配置,使用Java8原生时间API -->
                    <dateLibrary>java8</dateLibrary>
                </configOptions>
            </configuration>
        </execution>
    </executions>
</plugin>

步骤2:添加缺失的项目依赖

在项目pom.xml的dependencies节点中添加以下依赖:

<!-- Gson依赖,Swagger Java生成器默认序列化组件 -->
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>
<!-- 使用restemplate作为HTTP客户端时需要引入spring-web依赖 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>5.3.27</version>
</dependency>

如果不调整插件配置、仍希望使用threetenbp作为时间处理组件,可额外添加以下依赖:

<dependency>
    <groupId>org.threeten</groupId>
    <artifactId>threetenbp</artifactId>
    <version>1.6.8</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-threetenbp</artifactId>
    <version>2.15.2</version>
</dependency>

步骤3:重新构建

执行mvn clean install即可完成正常编译打包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 07:15:01