Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ClassNotFoundException, Serializable изменилось имя класса 
V
    Опции темы
moes
Дата 30.6.2008, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 25.2.2007

Репутация: нет
Всего: нет



Всем привет smile

Может быть сталкивался со следующейпроблемой.
У меня есть класс, который наследует интерфеус Serializable:
Код

class MyClass implements Serializable{
//////
}


Я его записывал в файл, при помощи ObjectOutputStream.
И соответственно считывал, используя ObjectInputStream.

Потом я этот класс перенес в другой package.
Теперь при считывании из файла получаю исключение ClassNotFoundException.

Есть ли возможность считать файл? 

заранее спасибо smile
PM MAIL   Вверх
polosatij
Дата 30.6.2008, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8





я так думаю, востанови его на прежнем месте, считай и перезапиши то, что у тебя было..  вот..  smile 


--------------------
PM   Вверх
w1nd
Дата 30.6.2008, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(moes @  30.6.2008,  20:53 Найти цитируемый пост)
Есть ли возможность считать файл?

А изменения ограничиваются только переносом в другой пакет? Состав полей и сигнатуры не менялись?


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
moes
Дата 30.6.2008, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 25.2.2007

Репутация: нет
Всего: нет



Цитата(polosatij @ 30.6.2008,  21:06)
я так думаю, востанови его на прежнем месте, считай и перезапиши то, что у тебя было..  вот..  smile

Это канечно можно, сделать. Но хотелось бы узнать другие возможности.

Добавлено через 1 минуту и 3 секунды
Цитата(w1nd @ 30.6.2008,  21:07)
А изменения ограничиваются только переносом в другой пакет? Состав полей и сигнатуры не менялись?

Изменился толь пакет, больше ничего не менялsmile
PM MAIL   Вверх
w1nd
Дата 1.7.2008, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(moes @  30.6.2008,  21:11 Найти цитируемый пост)
Изменился толь пакет, больше ничего не менял

Тогда я присоединяюсь к уже прозвучавшему совету. Вам вообще что нужно - восстановить данные или убрать зависимость от подобных изменений?


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
moes
Дата 1.7.2008, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 25.2.2007

Репутация: нет
Всего: нет



По большому счету хочется убрать зависимость от таких случаев. smile 
Допустим, если файлов очень много и не представляется возможным их перекопирование.
Неужели, если поменять имя класса или в другой пакет его перекопировать нету возможности считать файл.
Я просто думал, что есть какоу-то стандартное средство, которое может на лету подменять имя класса.
 smile 


PM MAIL   Вверх
LSD
Дата 1.7.2008, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(moes @  1.7.2008,  11:04 Найти цитируемый пост)
По большому счету хочется убрать зависимость от таких случаев.

Реализуй собственный механизм сериализации.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
moes
Дата 1.7.2008, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 25.2.2007

Репутация: нет
Всего: нет



Цитата(LSD @ 1.7.2008,  10:43)
Реализуй собственный механизм сериализации.

Это очень трудоемко для данной задачи  smile 

Просто удивительно, что в случае рефакторинга (просто поменять имя класса или пакет) и уже нету возможности читать файл. 
PM MAIL   Вверх
LSD
Дата 1.7.2008, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(moes @  1.7.2008,  11:58 Найти цитируемый пост)
Просто удивительно, что в случае рефакторинга (просто поменять имя класса или пакет) и уже нету возможности читать файл.  

А почему он должен быть? Подумай, как механизм сериализации должен догадываться о том, идентичны классы или нет.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
moes
Дата 1.7.2008, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 25.2.2007

Репутация: нет
Всего: нет



Можно было сделать, что-то вроде маппинга.
Чтобы дать возможность делать соответствии между классами.
MyClass -> NewNameMySlass

Тогда JVM будет знать, что если обращаются к классе MyClass,
надо использовать NewNameMyClass.

 smile Возможно ли это реализовать?

PM MAIL   Вверх
LSD
Дата 1.7.2008, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(moes @  1.7.2008,  12:37 Найти цитируемый пост)
Возможно ли это реализовать?

Можно. Но реализовывать придется тебе, т.к. создатели JRE посчитали что это нафиг не нужно (и тут я с ними согласен) и создает кучу проблем.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
moes
Дата 1.7.2008, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 25.2.2007

Репутация: нет
Всего: нет



а можно ссылочку или пример как это можно реализовать.
И вообще сложно ли это? smile 
PM MAIL   Вверх
LSD
Дата 1.7.2008, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(moes @  1.7.2008,  13:12 Найти цитируемый пост)
а можно ссылочку или пример как это можно реализовать.

Нет никаких ссылок, смотри как работает сериализация (все исходники доступны) и делай свою с учетом своих требований.


Цитата(moes @  1.7.2008,  13:12 Найти цитируемый пост)
И вообще сложно ли это?

Да.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
moes
Дата 1.7.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 25.2.2007

Репутация: нет
Всего: нет



 smile  спасибо за помощь!
Думаю легче всего будет вернуть старые имена классов, и пакетов  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0860 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.