Java项目执行gradlew build时找不到javax.annotation.Generated类如何解决
错误原因
- 你本地运行构建使用的JDK版本高于8,
javax.annotation.Generated注解类从Java 9开始已从JDK默认内置类库中移除,不再默认提供 - 本次报错的所有
*Grpc.java均为gRPC自动生成的代码,gRPC代码生成逻辑默认会添加@javax.annotation.Generated注解标注代码生成来源,项目未引入对应依赖时就会触发找不到类的编译错误
解决方案
你可以根据自己的实际场景选择以下任意一种方案修复:
- 方案1:将本地构建使用的JDK版本降级到Java 8,该版本JDK内置了
javax.annotation.Generated类,无需修改项目任何配置即可直接编译通过 - 方案2:在项目的依赖配置中添加javax.annotation官方依赖,适合不想降级JDK版本的场景。如果是多模块项目,将依赖添加到报错的
:protocol模块的build.gradle文件中即可,配置如下:
dependencies { // 原有依赖保持不变,新增如下配置 implementation 'javax.annotation:javax.annotation-api:1.3.2' }
- 方案3:修改gRPC代码生成配置,关闭Generated注解的生成逻辑,无需额外引入依赖,对应protobuf gradle配置调整如下:
protobuf { generateProtoTasks { all().each { task -> task.plugins { grpc { option 'disable_generated_annotations=true' } } } } }
内容的提问来源于stack exchange,提问作者Axat Bhardwaj
相关产品推荐
相关产品推荐

