Сериализуемый класс не найден. CLASSNAME выдает ошибку при перемещении пакета класса (даже если в классе указан serialVersionUID)

Я работаю с Redis(через Redisson) У меня есть класс DTO, который я сериализую десериализации в Redis,

кодек, который я использую:

org.redisson.codec.FstCodec

когда я перемещаю класс в другое пространство имен, несмотря на явную установку: serialVersionUID в классе DTO в классе, я получаю следующее исключение:

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.

Спасибо заранее

PS

В настоящее время я обращаюсь с этим путем сериализации объекта с использованием json, а затем установки его в redis, но это всего лишь двойная сериализация, и я хотел бы избежать этого

1 ответ

Решение

когда я перемещаю класс в другое пространство имен, несмотря на явную установку: serialVersionUID в классе DTO в классе, я получаю следующее исключение:

Вы не можете десериализовать объект, если его имя пакета или класса изменилось.

В настоящее время я обращаюсь с этим путем сериализации объекта с использованием json, а затем установки его в redis.

Вы можете установить Redisson для Джексона следующим образом codec = org.redisson.codec.JsonJacksonCodec

Другие вопросы по тегам