Swagger Java Client编译失败:找不到javax.annotationmvn包
解决Swagger-Codegen生成客户端编译报错:package javax.annotationmvn does not exist
问题场景
尝试构建由swagger-codegen-cli生成的Java客户端包,作为Java 17版本Spring Boot项目的依赖。执行mvn clean install时触发编译错误:
[INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] <path-to-project>/Projects/dev/Sellers_JavaCL/src/main/java/io/swagger/client/model/BatchRequest.java:[33,21] package javax.annotationmvn does not exist [INFO] 1 error [INFO] ------------------------------------------------------------- [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.041 s [INFO] Finished at: 2024-02-18T18:07:32-08:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project swagger-java-client: Compilation failure [ERROR] <path-to-project>/Projects/dev/Sellers_JavaCL/src/main/java/io/swagger/client/model/BatchRequest.java:[33,21] package javax.annotationmvn does not exist
查看报错文件BatchRequest.java,发现注解包名拼写错误,annotationmvn为无效包名:
@ApiModel(description = "Common properties of batch requests against individual APIs.") @javax.annotationmvn.Generated(value = "io.swagger.codegen.languages.JavaClientCodegen", date = "2024-02-17T14:18:13.581-08:00")
已尝试的无效操作:
- 删除
.m2仓库后重新执行mvn clean install - 切换JDK版本为17、11、1.8、1.7
- 执行
mvn dependency:tree分析依赖
解决方案
1. 修正注解包名拼写错误
将代码中所有javax.annotationmvn.Generated替换为javax.annotation.Generated,正确的@Generated注解位于javax.annotation包下,此问题应为swagger-codegen生成代码时的拼写bug。
2. 添加依赖并适配Java编译版本
由于Java 9及以上版本已移除javax.annotation默认依赖,同时需确保Maven编译配置匹配目标Java版本:
- 在项目
pom.xml中添加javax.annotation-api依赖:
<dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.3.2</version> </dependency>
- 更新
maven-compiler-plugin配置,适配Java 17:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <!-- 使用适配高版本Java的插件版本 --> <configuration> <source>17</source> <target>17</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>
3. 重新生成客户端(可选)
若频繁出现此类生成bug,建议升级swagger-codegen-cli至最新稳定版(如3.x系列),重新生成客户端代码,从源头避免拼写错误。
内容的提问来源于stack exchange,提问作者Danny Lu
相关产品推荐
相关产品推荐

