0
点赞
收藏
分享

微信扫一扫

FeignClient List<xxObject> java.lang.ClassCastException

三千筱夜 2022-03-23 阅读 56

bug场景:
1、使用FeignClient调用业务系统获得List<xxObecjt>
2、遍历List执行业务逻辑

List<xxObecjt> xxObecjtLsit = feginClient.getList();
for (xxObject obecjt : xxObecjtLsit) {
	.......
}

报错信息:

java.lang.ClassCastException: class com.alibaba.fastjson.JSONObject cannot be cast to class com.flex.ops.model.vo.xxObecjt (com.alibaba.fastjson.JSONObject and com.flex.ops.model.vo.xxObecjt are in unnamed module of loader org.springframework.boot.loader.LaunchedURLClassLoader @21a5fd96)
 at com.flex.notify.message.PreOrderMessage.lambda$createPreOrder$0(PreOrderMessage.java:104)
 at java.base/java.util.HashMap.forEach(HashMap.java:1333)
 at com.flex.notify.message.PreOrderMessage.createPreOrder(PreOrderMessage.java:100)
 at com.flex.notify.message.PreOrderMessage.sendNotify(PreOrderMessage.java:56)
 at com.flex.notify.listener.NotifyListener.preOrder(NotifyListener.java:53)
 at jdk.internal.reflect.GeneratedMethodAccessor352.invoke(Unknown Source)
 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.base/java.lang.reflect.Method.invoke(Method.java:567)
 at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:171)
 at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:120)
 at org.springframework.kafka.listener.adapter.HandlerAdapter.invoke(HandlerAdapter.java:56)
 at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:347)
 at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:92)
 at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:53)
 at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeOnMessage(KafkaMessageListenerContainer.java:2584)
 at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeOnMessage(KafkaMessageListenerContainer.java:2565)
 at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeRecordListener(KafkaMessageListenerContainer.java:2492)
 at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeWithRecords(KafkaMessageListenerContainer.java:2402)
 at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeRecordListener(KafkaMessageListenerContainer.java:2281)
 at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeListener(KafkaMessageListenerContainer.java:1955)
 at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeIfHaveRecords(KafkaMessageListenerContainer.java:1354)
 at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.pollAndInvoke$original$9xHn35ni(KafkaMessageListenerContainer.java:1345)
 at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.pollAndInvoke$original$9xHn35ni$accessor$nfxljpQV(KafkaMessageListenerContainer.java)
 at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer$auxiliary$a9STva4f.call(Unknown Source)
 at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:86)
 at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.pollAndInvoke(KafkaMessageListenerContainer.java)
 at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:1237)
 at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
 at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
 at java.base/java.lang.Thread.run(Thread.java:835)

本机开发环境和测试环境都没有问题,查看了生产的数据信息和本地的数据结构一致

解决办法:转成jsonString在转回去

String jsonString = JSON.toJSONString(list);
List<WorkerVO> finalList = JSON.parseArray(jsonString, xxObject.class);

虽然不知道为啥,但是可以解决这个问题,等以后能力提升在研究到底是因为啥吧。。。。

举报

相关推荐

0 条评论