我正在关注此处的https://github.com/grpc/grpc-java/tree/master/examples/src/main/java/io/grpc/examples/helloworld链接以尝试让grpc正常工作。
这是最终的文件夹结构。
我的HelloWorldServer.java与https://github.com/grpc/grpc-java/blob/master/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java相同,但包名称除外。
但是Intellij告诉它无法解析符号GreeterGrpc。
有人可以帮助我离开这里吗?
答案 0 :(得分:5)
请注意GreeterGrpc.java
位于generated-sources
下,
但是IntelliJ不知道它是一个源文件。
我看到target/generated-sources/protobuf/java
被标记为生成的源根,但target/generated-sources/protobuf/grpc-java
不是。
通常,IntelliJ会从pom.xml
中的配置中选择它。
也许你没有在那里正确配置的东西。
您可以尝试通过右键单击pom.xml
重新导入Maven模块,
然后选择 Maven ,然后选择重新导入。
grpc-java
的图标应该用齿轮变为蓝色,
像java
在同一目录级别。
如果不起作用,
然后您可以手动将grpc-java
标记为生成的源根:
右键单击它,选择将目录标记为,然后选择生成的源根。
答案 1 :(得分:2)
Protobuf插件假定Protobuf文件(* .proto)的组织方式与sourceSets中的Java源文件相同。 sourceSet的Protobuf文件在一次协议运行中进行编译,并将生成的文件添加到该sourceSet()的Java编译运行的输入中。
sourceSets {
main {
java {
srcDirs 'build/generated/source/proto/main/grpc'
srcDirs 'build/generated/source/proto/main/java'
}
}
}
感谢@ https://medium.com/@DivyaJaisawal/generate-java-code-from-proto-file-using-gradle-1fb9fe64e046