Объект myo = objectInputStream.readObject() java.io.InvalidClassException: java.util.HashMap; локальный класс несовместиJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Объект myo = objectInputStream.readObject() java.io.InvalidClassException: java.util.HashMap; локальный класс несовмести

Сообщение Anonymous »

  • Включите подробную информацию о своей цели:
Используйте return (Map) objectInputStream.readObject() ; чтобы получить карту без ошибок в собственном образе graalVM.
  • Опишите ожидаемые результаты:

Код: Выделить всё

return (Map) objectInputStream.readObject();
вернет правильную карту.
  • Опишите фактические результаты:
Не удается ни
  • запросить добавление java.util.Collections$UnmodifyingMap в сериализацию-config.json< /li>
    если я добавлю java.util.Collections$UnmodifyingMap в сериализацию-config.json (в правильности которого я даже не уверен), я получу java.io .InvalidClassException: java.util.HashMap; локальный класс несовместим: поток classdesc
  • Включить все сообщения об ошибках:
    Если я не добавляю что-либо в сериализацию-config.json, произойдет ошибка, и трассировка стека попросит меня добавить java.util.Collections$UnmodifyingMap в сериализацию-config.json
Если я добавлю его, я получу следующую трассировку стека:

Код: Выделить всё

java.io.InvalidClassException: java.util.HashMap; local class incompatible: stream classdesc serialVersionUID = 362498820763181265, local class serialVersionUID = -3563561681480877083
at java.base@22.0.1/java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:598)
at java.base@22.0.1/java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:2063)
at java.base@22.0.1/java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1912)
at java.base@22.0.1/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2237)
at java.base@22.0.1/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1747)
at java.base@22.0.1/java.io.ObjectInputStream$FieldValues.(ObjectInputStream.java:2603)
at java.base@22.0.1/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2454)
at java.base@22.0.1/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2269)
at java.base@22.0.1/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1747)
at java.base@22.0.1/java.io.ObjectInputStream.readObject(ObjectInputStream.java:525)
at java.base@22.0.1/java.io.ObjectInputStream.readObject(ObjectInputStream.java:483)
  • Покажите код:
Код на самом деле очень простой:

Код: Выделить всё

private static Map getNormalizedMap(String encoded) {
try (var objectInputStream = new ObjectInputStream(new ByteArrayInputStream(Base64.getDecoder().decode(encoded)))) {
return (Map) objectInputStream.readObject(); // issue here !
} catch (IOException | ClassNotFoundException | IllegalArgumentException e) {
LOGGER.error("encoded={}", encoded, e);
return Map.of();
}
}
  • Вопрос:
Как правильно вернуть (Карта ) objectInputStream.readObject(); в собственном образе graalVM, так как код в неродном образе вообще не вызывает проблем.

Подробнее здесь: https://stackoverflow.com/questions/784 ... ption-java
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»