我有一個grpc服務代碼,使用maven protoc插件0.4.2和grpc 0.8.0編譯。我試圖用dataFlow sdk 1.4.0使用這個生成的代碼,但當我嘗試使用阻塞存根創建grpc客戶端時,出現此錯誤。grpc with dataflow - java.lang.NoSuchMethodError
com.google.cloud.dataflow.sdk.Pipeline$PipelineExecutionException: java.lang.NoSuchMethodError: io.grpc.protobuf.ProtoUtils.marshaller(Lcom/google/protobuf/MessageLite;)Lio/grpc/MethodDescriptor$Marshaller;
at com.google.cloud.dataflow.sdk.Pipeline.run(Pipeline.java:186)
我不知道這是否是因爲一些差異與數據流SDK中使用的protobuf的版本和GRPC生成的代碼之間。 當我在管道
com.google.cloud.dataflow.sdk.Pipeline$PipelineExecutionException: java.lang.NoSuchMethodError: com.google.protobuf.GeneratedMessage.computeStringSize(ILjava/lang/Object;)I
at com.google.cloud.dataflow.sdk.Pipeline.run(Pipeline.java:186)
我已經從Maven的數據流SDK的依賴,唯一的protobuf和GROC封裝,顯示了排除protobuf的嘗試輸出從DOFN的之一protobuf的消息,我也得到這個錯誤在我的依賴樹中分別是3.0.0-alpha-3.1和0.8.0。
僅供參考此ProtoUtils.marshaller已移至ProtoLiteUtils發佈0.14 –