Сериализуемый класс не найден. 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