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

解决Maven构建grpcDemo1项目时的Generated类缺失编译错误

Maven编译失败:找不到javax.annotation.Generated的解决办法

问题根源

gRPC生成的userGrpc.java文件中引用了javax.annotation.Generated类,但该类在Java 9及以上版本的JDK中不再默认包含,或项目未引入对应依赖,导致Maven编译时报错。

具体解决办法

方案1:添加javax.annotation-api依赖

在pom.xml的<dependencies>节点中加入以下依赖,直接提供缺失的类:

<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
    <scope>compile</scope>
</dependency>

方案2:修改gRPC插件配置,改用JDK自带注解

如果项目使用Java 11+,可以让gRPC代码生成器使用JDK自带的javax.annotation.processing.Generated注解(注意包名差异)。在pom.xml的protobuf-maven-plugin配置中添加参数:

<plugin>
    <groupId>org.xolstice.maven.plugins</groupId>
    <artifactId>protobuf-maven-plugin</artifactId>
    <version>0.6.1</version>
    <configuration>
        <protocArtifact>com.google.protobuf:protoc:3.21.7:exe:${os.detected.classifier}</protocArtifact>
        <pluginId>grpc-java</pluginId>
        <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.51.0:exe:${os.detected.classifier}</pluginArtifact>
        <!-- 新增配置:指定生成注解类型 -->
        <protocPlugins>
            <protocPlugin>
                <id>grpc-java</id>
                <groupId>io.grpc</groupId>
                <artifactId>protoc-gen-grpc-java</artifactId>
                <version>1.51.0</version>
                <parameters>
                    <parameter>generatedAnnotationType=javax.annotation.processing.Generated</parameter>
                </parameters>
            </protocPlugin>
        </protocPlugins>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>compile</goal>
                <goal>compile-custom</goal>
            </goals>
        </execution>
    </executions>
</plugin>

修改后重新生成代码,就会使用JDK自带的注解,无需额外依赖。

方案3:指定Java 8编译版本(仅适用于Java 8项目)

如果项目基于Java 8,确保maven-compiler-plugin明确指定编译版本为1.8,Java 8的JDK默认包含该注解:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

验证操作

修改pom.xml后,执行以下命令重新编译项目:

mvn clean compile

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:12:19