GRPC Java教程问题:protobuf-maven-plugin无法在单包生成源码
解决Eclipse中GRPC生成类缺失的问题
嘿,这问题我熟!很多刚接触GRPC+Eclipse的新手都会碰到——Maven构建明明成功了,生成的GRPC相关类却在IDE里看不到,导致现有代码报依赖错误对吧?
其实原因很简单:Maven构建时,protoc和GRPC插件已经把你需要的那些类(比如RouteGuideGrpc、RouteGuideProtos这类)生成到了项目的target/generated-sources/protobuf目录下,但Eclipse默认不会自动将这个目录识别为源码目录,所以IDE里就看不到这些文件,还会出现编译报错。
给你几个快速解决的办法,按顺序来就行:
方法一:手动让Eclipse识别生成目录
这是最直接的临时解决方案:
- 右键你的项目 → 选择
Build Path→Configure Build Path... - 切换到
Source标签页,点击Add Folder... - 展开
target/generated-sources目录,勾选里面的protobuf/java和protobuf/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重新构建,然后右键项目 → Maven → Update Project...,Eclipse就会自动把这两个生成目录加入源码路径,以后再构建也不用手动配置了。
额外小提示
如果更新Maven项目后还是有问题,试试先删除项目的target目录,再重新执行mvn clean install,有时候旧的生成文件会导致缓存问题。
内容的提问来源于stack exchange,提问作者Ihor M.




