ClassNotFoundException при попытке декодировать объект из String - PullRequest
0 голосов
/ 06 мая 2020

Хорошо, у меня есть приложение Android Studio с пользовательским классом

public class User{
   int age;
   String name;
   int yearOfBirth;
}

А затем у меня есть два метода

public static Object fromString(String s) throws IOException,ClassNotFoundException {
    byte [] data = Base64.getDecoder().decode(s);
    ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data));
    Object o  = ois.readObject();
    ois.close();
    return o;
}

public static String toString(Serializable o) throws IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(baos);
    oos.writeObject(o);
    oos.close();
    return Base64.getEncoder().encodeToString(baos.toByteArray());
}

Итак, я создаю объект User , преобразуйте его в String, сохраните его в базе данных на другом устройстве, где мне нужно преобразовать объект обратно в объект User, чтобы изменить некоторые вещи, снова конвертируйте в String, сохраните в базе данных, а затем снова сможете декодировать объект User в моем приложении.

Проблема в том, что при попытке декодирования String на стороне сервера я получаю это исключение

Исключение в потоке «main» java .lang.ClassNotFoundException: com.example .mikithenics.User

Какое может быть возможное решение? Любая помощь приветствуется.

1 Ответ

1 голос
/ 06 мая 2020

Вы можете сериализовать это с помощью библиотеки Google Gson следующим образом:

Gson gson = new Gson();

String jsonString = gson.toJson(userObject);

И десериализовать следующим образом:


Gson gson = new Gson();

User userObject = gson.fromJson(userJsonString, User.class);

Чтобы использовать Gson lib, поместите это в свое приложение build.gradle файл, внутри зависимостей:

implementation 'com.google.code.gson:gson:2.8.6'

...