当前位置: 首页 > 知识库问答 >
问题:

春云流 - 反序列化失败 - 解析类名失败。未找到类

蒙胤
2023-03-14

应用程序A写入用户对象(json)下面的Kafka主题:

public class UserEvent {
   private UUID id; 
   private Object payload; // contains User fields name etc.
}

应用程序 B 正在尝试使用此用户对象(用户.java驻留在应用程序 B 项目中)与以下 application.yml(多个绑定器):

    binders:
    azureEventHub:
        type: kafka
        environment:
            spring:
                kafka:
                    bootstrap-servers: servicebus.windows.net:9093
                    consumer:
                        key-deserializer: org.springframework.kafka.support.serializer.ErrorHandlingDeserializer
                        value-deserializer: org.springframework.kafka.support.serializer.ErrorHandlingDeserializer
                        properties:
                            spring.deserializer.key.delegate.class: org.apache.kafka.common.serialization.StringDeserializer
                            spring.deserializer.value.delegate.class: org.springframework.kafka.support.serializer.JsonDeserializer
                            spring.json.trusted.packages: com.*
                            spring.json.value.default.type: com.applicationb.User

下面是我的Spring Cloud Stream处理器类的外观:

  @Bean 
  public Function<Message<User>, String> userProcessor()  
  {..  }

但是,它没有将Message有效负载转换为“用户”类,而是不断抛出错误,未找到
父类“User事件”。

org.springframework.kafka.listener.ListenerExecutionFailedException: 
Listener failed; nested exception is org.springframework.kafka.support.serializer.DeserializationException: 
failed to deserialize; nested exception is org.springframework.messaging.converter.MessageConversionException: 
failed to resolve class name. Class not found [com.abcd.UserEvent]; 
nested exception is java.lang.ClassNotFoundException: com.abcd.UserEvent

有什么想法吗?

共有1个答案

岳阳飙
2023-03-14

反序列化程序将在返回到默认值(User)之前使用标头中的类型信息。

同时设置spring.json.use.type。headers</code>到<code>false</code>。

 类似资料:
  • 将有更多的类(不同的产品)扩展。 当我使用序列化它时, 这是输出: 将引发此异常: java.lang.IllegalArgumentException:意外的标记(VALUE_STRING),应为field_name:缺少包含类型id(类com.shubham.model.product的)的属性“type”,位于[源:n/a;行:-1,列:-1] 我在这里做错了什么?我观察了一下,发现了一个问

  • 我正在尝试使用apache camel jackson xml对xml进行反序列化,然后发生了一些奇怪的事情,我无法解释。这是我正在尝试反序列化的xml(它是简单的xmltd v xml文件): 这是我的POJO: 电视。Java语言 程序Java语言 Credits.java 其他POJO并不重要。下面是路由配置: 使用此设置和我在开始时提供的xml,会发生以下异常: 通用域名格式。faster

  • 问题内容: 我正在使用Newtonsoft.Json将Web服务的输出反序列化到对象。在我向我的课程(名为)添加一个属性以保存化身之前,它一直运行良好。 Web服务正按预期返回该属性作为Base64字符串。问题是当我尝试将JSON从WS转换回a时,在此代码块中引发了a : 异常的输出是: 并查看内部异常: 显然,它无法解析Base64字符串,但不清楚原因。 有任何想法/解决方法吗? 编辑 我知道我

  • 我们正在尝试使用具有net core后端的流,但出现反序列化错误 协议是版本3.14.0 grpc-web-gen是1.2.1 生成客户端的命令是:协议-我=。/原型。/原型/*. proto-js_out=import_style=通用js,二进制:。/dist--grpc-web_out=import_style=通用js dts,模式=grpcwebtext:。/dist 我们成功连接到en

  • 我有以下JSON: 这基本上是一个包含项集合的对象。 所以我做了一个类来反序列化: 我尝试添加,但没有成功。 怎么走?

  • 在使用ErrorHandlingDeserializer处理Avro组合的错误时,我无法发布到Dlq主题。以下是发布时的错误。 主题Topic_DLT在60000毫秒后不在元数据中。错误KafkaConsumerDestination{consumerDestination Name='Topic‘,partitions=6,dlqName='TOIC_DLT‘}。container-0-C-1