Protobuf NoClassDefFoundError - 解析 grpc 响应时出错

时间:2021-06-02 19:23:14

标签: protocol-buffers grpc protobuf-java

io.grpc.StatusRuntimeException: CANCELLED: Failed to read message.
    at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:244)
    at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:225)
    at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:142)
    at com.xyz.orderplatform.order.v1.OrderServiceAPIGrpc$OrderServiceAPIBlockingStub.getOrderById(OrderServiceAPIGrpc.java:413)
    at com.xyz.sgflume.transformers.order_helper.OrderServiceClient.getOrderById(OrderServiceClient.java:16)
    at com.xyz.sgflume.transformers.services.OrderService.getOrderData(OrderService.java:55)
    at com.xyz.sgflume.transformers.de.governance.actioning.ActionCommunicationDeserializer.getOrderDataForEvent(ActionCommunicationDeserializer.java:68)
    at com.xyz.sgflume.transformers.de.governance.actioning.ActionCommunicationDeserializer.transform(ActionCommunicationDeserializer.java:32)
    at com.xyz.sgflume.transformers.de.governance.actioning.ActionCommunicationDeserializer.transform(ActionCommunicationDeserializer.java:73)
    at org.apache.flume.sink.http.HttpPooledSink.lambda$process$1(HttpPooledSink.java:256)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.xyz.orderplatform.order.v1.AddnOrderInfo$PricingOptionsDefaultEntryHolder
    at com.xyz.orderplatform.order.v1.AddnOrderInfo.<init>(AddnOrderInfo.java:110)
    at com.xyz.orderplatform.order.v1.AddnOrderInfo.<init>(AddnOrderInfo.java:14)
    at com.xyz.orderplatform.order.v1.AddnOrderInfo$1.parsePartialFrom(AddnOrderInfo.java:2191)
    at com.xyz.orderplatform.order.v1.AddnOrderInfo$1.parsePartialFrom(AddnOrderInfo.java:2185)
    at com.google.protobuf.CodedInputStream$ArrayDecoder.readMessage(CodedInputStream.java:883)
    at com.xyz.orderplatform.order.v1.Order.<init>(Order.java:274)
    at com.xyz.orderplatform.order.v1.Order.<init>(Order.java:15)
    at com.xyz.orderplatform.order.v1.Order$1.parsePartialFrom(Order.java:5208)
    at com.xyz.orderplatform.order.v1.Order$1.parsePartialFrom(Order.java:5202)
    at com.google.protobuf.CodedInputStream$ArrayDecoder.readMessage(CodedInputStream.java:883)
    at com.xyz.orderplatform.order.v1.GetOrderByIdResponse.<init>(GetOrderByIdResponse.java:74)
    at com.xyz.orderplatform.order.v1.GetOrderByIdResponse.<init>(GetOrderByIdResponse.java:13)
    at com.xyz.orderplatform.order.v1.GetOrderByIdResponse$1.parsePartialFrom(GetOrderByIdResponse.java:921)
    at com.xyz.orderplatform.order.v1.GetOrderByIdResponse$1.parsePartialFrom(GetOrderByIdResponse.java:915)
    at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:86)
    at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:48)
    at io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller.parseFrom(ProtoLiteUtils.java:223)
    at io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller.parse(ProtoLiteUtils.java:215)
    at io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller.parse(ProtoLiteUtils.java:118)
    at io.grpc.MethodDescriptor.parseResponse(MethodDescriptor.java:273)
    at io.grpc.MethodDescriptor.parseResponse(MethodDescriptor.java:273)
    at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1MessagesAvailable.runInternal(ClientCallImpl.java:658)
    at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1MessagesAvailable.runInContext(ClientCallImpl.java:643)
    at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
    at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
    at io.grpc.stub.ClientCalls$ThreadlessExecutor.waitAndDrain(ClientCalls.java:694)
    at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:135)
    ... 12 common frames omitted

我可以看到服务器返回了响应,但客户端无法解析它,遇到上述异常。 这是问题似乎发生的 AddnOrderInfo proto:

message AddnOrderInfo{
string vendor_placement_status = 1 [deprecated=true];
bool is_reorder_allowed = 2 [deprecated=true];
bool is_edit_allowed = 3 [deprecated=true];
string cart_id = 4;
CloneInfo clone_info = 5 ;
EditInfo edit_info = 6;
map<string, google.protobuf.Any> pricing_options = 7 [deprecated=true];
google.type.Money order_incoming = 8;
bool is_customers_first_order = 9 [deprecated=true];
repeated string order_tags = 10;
google.type.Money cancellation_refund_amount = 11;

}

仅供参考 - 已经通过 maven 依赖项导入了 protos,并且类文件存在于类路径中。 提前感谢您的见解。

0 个答案:

没有答案