Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Сериализация объекта


Автор: maxlab 29.12.2008, 13:40
С наступающим!
Вопрос такой: Например есть простой класс, и два приложения. Первое приложение создает объект, заполняет поля и сохраняет в файл. Второе приложение должно его читать и воспользоваться содержимым полей. В рамках одного приложения чтение-запись проходит. Между приложениями нет. Вываливает ошибку (каст)
Код

Caused by: java.lang.ClassCastException: Loader.classes.Dbc cannot be cast to b2009.classes.Dbc

хотя в двух приложениях класс Dbc абсолютно одинаков. Как обойти? Внутренний голос мне подсказывает что этот класс нужно вообще оформить отдельно и включить в classpath. Но не хотелось бы...

Автор: sith 29.12.2008, 14:13
а как ты сериализуешь... приведи пример кода

Автор: inohodec 29.12.2008, 14:15
Ну так один 
Код

Loader.classes.Dbc 
а другой 
Код

b2009.classes.Dbc

Разве нет?

Автор: MisterCleric 29.12.2008, 14:22
Нет, конечно.
разве что    
Loader.classes.Dbc 
является наследником 
b2009.classes.Dbc

Хоть эти классы и называются одинаково, хоть и содержимое их одинаково, но из-за того что они лежат в разных пакетах их серриализуемая форма будет разной
У тебя оба приложения должны использовать одни и те же классы, что нормально их серриализовать и десерриализовать.

В твоем случае, если ты не хочешь шарить классы между приложениями придется придумывать свой механизм серриализации.
Попробуй посмотреть в сторону 
http://www.google.com.ua/search?q=java+Externalization

Автор: maxlab 30.12.2008, 20:05
Да, действительно... Оформил класс как внешнюю библиотеку и подключил к своим проложениям. Работает... сериализует-десериализует. Как отойду от новогоднего безумия, попробую с externalization поэкспериментировать. Все равно сериализуемые объекты еще надо ухитриться как то зашифровать... хотя бы элементарно. 
Всем всего хорошего.

Автор: Vurn 30.12.2008, 23:17
RMI

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)