Посмотрите на сообщение об ошибке снова:
java.io.InvalidClassException: java.awt.Color;
local class incompatible:
stream classdesc serialVersionUID = 118526816875918197,
local class serialVersionUID = 118526816881161077
кажется, что вы сериализованная класс, используя одну версию Color
и попытайтесь десериализировать ее с другим.
Это serialVersionUID
в моей среде.
private static final long serialVersionUID = 118526816881161077L;
Это совпадает с вашим вторым serialVersionUID
. Однако первый отличается: 118526816875918197
. Этот факт немного странный, потому что я сравнивал ID этой версии с java 6 и java 7 JDK, и они равны. Я не могу сравнивать его со старым JDK, а также с JDK от других поставщиков (а не от Oracle). Поэтому я могу предположить, что вы создали свой файл с более старой версией JDK или с JDK от другого поставщика (например, откройте JDK, IBM и т. Д.) Или на другой платформе.
Если это так, я предлагаю вам настроить сериализацию своего класса, реализовав собственные методы writeObject()
и readObject()
. Вам не нужно повторно внедрять сериализацию всех ваших классов. Достаточно обернуть Color
вашей настраиваемой оболочкой, чтобы настроить сериализацию.
ВЗАИМОДЕЙСТВИЕ ПЕРЕХОДНОЙ/обратной совместимости сериализованного объекта является известной слабостью всего механизма сериализации java. Вы можете использовать альтернативы, например. сериализация в JSON, XML или другой двоичный формат.
Для JSON вы можете использовать Jackson или Gson для XML JAXB или Xstream для бинарного формата protobuff.
Вы работаете с сервером как jboss? возможно, у вас есть конфликт с банками, банкой, которую вы используете в локальном и приоткрытом состоянии на сервере. Это разные ... надеюсь, это поможет. – ZaoTaoBao
Heyho :) Нет, все локально ... Он работал несколько недель назад без проблем ... Не знаю, почему его сбой теперь:/Могу ли я установить/увидеть UID класса цветов? –
Ты работаешь с maven? – ZaoTaoBao