微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Protobuf NoClassDefFoundError - 解析 grpc 响应时出错

如何解决Protobuf NoClassDefFoundError - 解析 grpc 响应时出错

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,并且类文件存在于类路径中。 提前感谢您的见解。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。