You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

GRPC Java教程问题:protobuf-maven-plugin无法在单包生成源码

解决Eclipse中GRPC生成类缺失的问题

嘿,这问题我熟!很多刚接触GRPC+Eclipse的新手都会碰到——Maven构建明明成功了,生成的GRPC相关类却在IDE里看不到,导致现有代码报依赖错误对吧?

其实原因很简单:Maven构建时,protoc和GRPC插件已经把你需要的那些类(比如RouteGuideGrpcRouteGuideProtos这类)生成到了项目的target/generated-sources/protobuf目录下,但Eclipse默认不会自动将这个目录识别为源码目录,所以IDE里就看不到这些文件,还会出现编译报错。

给你几个快速解决的办法,按顺序来就行:

方法一:手动让Eclipse识别生成目录

这是最直接的临时解决方案:

  • 右键你的项目 → 选择Build PathConfigure Build Path...
  • 切换到Source标签页,点击Add Folder...
  • 展开target/generated-sources目录,勾选里面的protobuf/javaprotobuf/grpc-java两个子目录(这就是生成类的存放地)
  • 点击OK保存配置,回到IDE里就能看到那些缺失的类了,依赖报错也会消失

方法二:用Maven插件自动配置(推荐)

如果不想每次构建后都手动操作,可以在项目的pom.xml里添加一个插件,让Maven自动把生成目录标记为源码目录:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>3.3.0</version>
    <executions>
        <execution>
            <id>add-grpc-sources</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>${project.build.directory}/generated-sources/protobuf/java</source>
                    <source>${project.build.directory}/generated-sources/protobuf/grpc-java</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>

添加完后,执行mvn clean install重新构建,然后右键项目 → MavenUpdate Project...,Eclipse就会自动把这两个生成目录加入源码路径,以后再构建也不用手动配置了。

额外小提示

如果更新Maven项目后还是有问题,试试先删除项目的target目录,再重新执行mvn clean install,有时候旧的生成文件会导致缓存问题。

内容的提问来源于stack exchange,提问作者Ihor M.

火山引擎 最新活动