小编fil*_*tal的帖子

同一班级不可分配。同一个类的类加载器不同

我有用于从 Kafka 主题读取 avro 消息的 spring 程序。当消息读取发生异常时:

org.springframework.messaging.converter.MessageConversionException:无法从 [com.mycompany.myapp.domain.avro.GreetingRecord] 转换为 [com.mycompany.myapp.domain.avro.GreetingRecord]

在调试中,我看到 ClassUtils.isAssignable 为同一类返回 false:

Class <?> targetClass = parameter.getParameterType();
Class <?> payloadClass = payload.getClass();
if (ClassUtils.isAssignable(targetClass, payloadClass)) { // return false for same class
    this.validate(message, parameter, payload);
    return payload;
} else {
    if (this.converter instanceof SmartMessageConverter) {
        SmartMessageConverter smartConverter = (SmartMessageConverter)this.converter;
        payload = smartConverter.fromMessage(message, targetClass, parameter);
    } else {
        payload = this.converter.fromMessage(message, targetClass);
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现 targetClass 和 payloadClass 中的类加载器不同(RestartClassLoaderLauncher$AppClassLoader

目标(有效载荷)类定义:

/**
 * Autogenerated by …
Run Code Online (Sandbox Code Playgroud)

java spring

5
推荐指数
1
解决办法
969
查看次数

标签 统计

java ×1

spring ×1