猿问

Serializable class not found 移动类包时抛出CLASSNAME错误

我正在使用 Redis(通过 redisson)我有一个 DTO 类,我正在将反序列化序列化为 Redis,


我使用的编解码器是:


org.redisson.codec.FstCodec


尽管在类的 DTO 类中显式设置了:serialVersionUID,但当我将类移动到不同的命名空间时,我得到以下异常:


java.io.IOException: java.lang.RuntimeException: class not found CLASSNAME:db.data.coins.CoinDTO loader:jdk.internal.loader.ClassLoaders$AppClassLoader@6ed3ef1 

在示例中,我从包中移动了类:


db.data.coins.CoinDTO


打包:


dto


链接到 fstCodec github:


关联


package dto; // altering package


import java.io.Serializable;

import java.sql.Timestamp;


public class CoinDTO implements Serializable {


    static final long serialVersionUID = 1L;


    private int id;


    private double amount;


    private Timestamp timestamp;


   //Getters and setters


}

我想更改包并仍然从 Redis 获取课程。


提前谢谢了


附言


我目前处理它的方式是使用json序列化对象,然后将其设置为redis,但这只是双重序列化,我想避免这种情况


慕娘9325324
浏览 216回答 1
1回答

倚天杖

尽管在类的 DTO 类中显式设置了:serialVersionUID,但当我将类移动到不同的命名空间时,我得到以下异常:如果对象的包或类名已更改,则无法反序列化对象。我目前处理它的方式是使用 json 序列化对象,然后将其设置为 redis您可以将 Redisson 设置为 Jackson,如下所示codec = org.redisson.codec.JsonJacksonCodec
随时随地看视频慕课网APP

相关分类

Java
我要回答