![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
moes |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 25.2.2007 Репутация: нет Всего: нет |
Всем привет
![]() Может быть сталкивался со следующейпроблемой. У меня есть класс, который наследует интерфеус Serializable:
Я его записывал в файл, при помощи ObjectOutputStream. И соответственно считывал, используя ObjectInputStream. Потом я этот класс перенес в другой package. Теперь при считывании из файла получаю исключение ClassNotFoundException. Есть ли возможность считать файл? заранее спасибо ![]() |
|||
|
||||
polosatij |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
я так думаю, востанови его на прежнем месте, считай и перезапиши то, что у тебя было.. вот.. ![]() |
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
А изменения ограничиваются только переносом в другой пакет? Состав полей и сигнатуры не менялись? -------------------- ![]() ![]() |
|||
|
||||
moes |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 25.2.2007 Репутация: нет Всего: нет |
Это канечно можно, сделать. Но хотелось бы узнать другие возможности. Добавлено через 1 минуту и 3 секунды
Изменился толь пакет, больше ничего не менял ![]() |
||||
|
|||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Тогда я присоединяюсь к уже прозвучавшему совету. Вам вообще что нужно - восстановить данные или убрать зависимость от подобных изменений? -------------------- ![]() ![]() |
|||
|
||||
moes |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 25.2.2007 Репутация: нет Всего: нет |
По большому счету хочется убрать зависимость от таких случаев.
![]() Допустим, если файлов очень много и не представляется возможным их перекопирование. Неужели, если поменять имя класса или в другой пакет его перекопировать нету возможности считать файл. Я просто думал, что есть какоу-то стандартное средство, которое может на лету подменять имя класса. ![]() |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Реализуй собственный механизм сериализации. -------------------- 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. |
|||
|
||||
moes |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 25.2.2007 Репутация: нет Всего: нет |
Это очень трудоемко для данной задачи ![]() Просто удивительно, что в случае рефакторинга (просто поменять имя класса или пакет) и уже нету возможности читать файл. |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
А почему он должен быть? Подумай, как механизм сериализации должен догадываться о том, идентичны классы или нет. -------------------- 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. |
|||
|
||||
moes |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 25.2.2007 Репутация: нет Всего: нет |
Можно было сделать, что-то вроде маппинга.
Чтобы дать возможность делать соответствии между классами. MyClass -> NewNameMySlass Тогда JVM будет знать, что если обращаются к классе MyClass, надо использовать NewNameMyClass. ![]() |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Можно. Но реализовывать придется тебе, т.к. создатели 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. |
|||
|
||||
moes |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 25.2.2007 Репутация: нет Всего: нет |
а можно ссылочку или пример как это можно реализовать.
И вообще сложно ли это? ![]() |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Нет никаких ссылок, смотри как работает сериализация (все исходники доступны) и делай свою с учетом своих требований. Да. -------------------- 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. |
|||
|
||||
moes |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 25.2.2007 Репутация: нет Всего: нет |
![]() Думаю легче всего будет вернуть старые имена классов, и пакетов ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |