![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| 0xBA0BAB |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.3.2008 Репутация: нет Всего: нет |
Здравствуйте, многоуважаемые коллеги!
Возникла необходимость реализовать свой ClassLoader. Реализовал. Лоадит. Инстанциирует. А вот результат инстанциирования не приводится к искомому классу Ничего н емогу понять. Вот кусок кода:
Отладчиком смотрю объект "о" - ну все правильно, тот самый объект, который и ожидался. Правильно проиннициализирован, отладчиу даже тоже пишет, что это экземпляр класса Serie. Но стоит только дойти до строки "return (Serie)o;" как вываливается эксепшен. Ничего понять не могу. Коллеги, выручайте! P.S. Если не выделываться с ClassLoader, просто сделать new Serie() , все проходит нормально. КлассЛоадер сам по себе никаких эксепшенов не выдает, как уже говорил, создается все правильно. |
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
А что за ИнвалидКастИксепшн? Где такой взял? ClassCastException or InvalidClassException? -------------------- Lost.... |
|||
|
||||
| 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. |
|||
|
||||
| 0xBA0BAB |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.3.2008 Репутация: нет Всего: нет |
java.lang.ClassCastException
LSD, а как подменить умолчальный? Умолчальный не сможет загрузить нужный класс. Собственно, зачем-то собственные класслоадеры придумали, как то ими все же пользуются? |
|||
|
||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Thread.setContextClassLoader(), но вообще-то если умолчальный не сможет загрузить все классы объявленные в сигнатуре метода, то и сам метод вызван не будет. Т.е. судя по это строчке
метод возвращает Serie и значит этот класс вполне успешно загружен умолчальным класс лоадером. -------------------- 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. |
||||
|
|||||
| 0xBA0BAB |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.3.2008 Репутация: нет Всего: нет |
Это я так хочу, чтобы он возвращался...
|
|||
|
||||
| SID_M |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 11.2.2005 Где: Россия, г. Москва Репутация: нет Всего: нет |
Очевидно, что эта тема - дела минувших дней.
Однако всё же интересно, как была решена проблема? Просто всё в жизни повторяется. У меня есть свой
Отсюда получается, что все классы, которые относятся к внешнему модулю грузятся моим ClassLoader-ом, а классы-предки внешних модулей, грузятся стандартным загрузчиком. Когда всё это дело дальше проверяется:
То преобразование типов не идет, нифига. Что подскажете? --------------------
Если тебе не дано летать, то хотя бы ползай с гордо поднятой головой. |
||||||
|
|||||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Меня смущает строчка:
Ты хочешь сказать, что твой ClassLoader не установлен как ContextClassLoader для этого модуля? -------------------- 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. |
|||
|
||||
| SID_M |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 11.2.2005 Где: Россия, г. Москва Репутация: нет Всего: нет |
Нет, не установлен. Ибо речь тут идет о Web приложении, в каждом конкретном случае я не знаю откуда достать классы исполняемого приложения, но я точно знаю, где будут лежать внешние модули. Мой ClassLoader загружает классы в зависимости от директории.
--------------------
Если тебе не дано летать, то хотя бы ползай с гордо поднятой головой. |
|||
|
||||
| SID_M |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 11.2.2005 Где: Россия, г. Москва Репутация: нет Всего: нет |
Так, народ, вопрос снимается. Там была детская ошибка при преобразовании типов.
Кстати рассуждения по поводу того, что если разные ClassLoader-ы загрузили классы, и они друг к другу не приводятся себя не подтвердили. К счастью... --------------------
Если тебе не дано летать, то хотя бы ползай с гордо поднятой головой. |
|||
|
||||
| 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. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |