Сериализуемый класс не найден. CLASSNAME выдает ошибку при перемещении пакета класса (даже если в классе указан serialVersionUID) - PullRequest
0 голосов
/ 19 января 2019

Я работаю с 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.

Большое спасибо заранее

P.S

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

1 Ответ

0 голосов
/ 21 января 2019

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

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

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

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

...