我试着用grpc做例子。如果我使用gradle,这确实很容易,但是,我要将grpc集成到使用另一个构建系统的项目中。我想知道如何只使用protoc、javac和java编译和运行示例。我能够从.proto源代码生成java源代码,但编译生成的java源代码却没有成功。
我尝试了1000个组合(不同的类空间),但没有任何效果。
> javac RouteGuideGrpc.java
< RouteGuideGrpc.java:3: error: package io.grpc.stub does not exist
import static io.grpc.stub.ClientCalls.asyncUnaryCall;(省略了其他99个编译错误)
有人能显示出一系列的命令来工作吗?谢谢。
Upd:我在Linux上做这个。
Upd:我在使用SBT,但这真的不重要。我真正想了解的是如何使用javac编译生成的grpc代码。我确信我在类路径中有grpc-core、grpc、grpc-protobuf和grpc-stub (实际上,在这一点上不确定.)。
发布于 2015-08-14 12:00:36
好吧,我解决了编译时的问题。
最后,我将println语句插入到grpc附带的build.gradle文件中,以查看编译这些示例时使用的实际类路径。
结果发现,grpc的版本为0.9.0,而在我的sbt构建中,我指的是0.7.2。
就在今天,0.8.0版的库被放到了maven存储库中,当我将版本从0.7.2改为0.8.0时,一切都如预期的那样工作。
发布于 2016-09-30 16:12:16
实际上,我自己也遇到了一些问题,试图从Gradle迁移到SBT。
首先,您应该利用原生质体插件为您编译.proto文件。确保:
protoc的路径和版本:
version in PB.protobufConfig := "3.0.0"
protoc in PB.protobufConfig := PATH_PROTOC.proto文件的位置(默认为src/main/protobuf):
sourceDirectory in PB.protobufConfig := baseDirectory.value / "src" / "main" / "proto"grpc-java使用的额外选项。第一个选项设置protoc-gen-grpc-java插件bin的路径;第二个选项将grpc-java的输出路径设置为与sbt-protobuf相同的路径。
protocOptions in PB.protobufConfig ++= Seq(
"--plugin=protoc-gen-grpc-java=" + PATH_GRPC_JAVA_PLUGIN,
"--grpc-java_out=" + baseDirectory.value + "/target/src_managed/main/compiled_protobuf")最后,我把所有这些都整理好了。就是这里,希望它能帮上忙!
发布于 2015-08-12 14:36:14
包io.grpc.stub是grpc工件的一部分。要构建代码生成的组件,至少需要类路径中的protobuf-java、grpc-stub、grpc-protobuf和grpc-core。根据编译的方式,您可能还需要任何protobuf生成的类(grpc生成的存根取决于原型生成的原型)。
在编译器目录中有手动运行代码生成器的文档,但是它不包括运行javac。
如果继续出现问题,请反复检查grpc编译器和protobuf-java是否有相同的版本,而protobuf grpc-java和grpc JARs是否有相同的版本。
https://stackoverflow.com/questions/31967159
复制相似问题