![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 4 Всего: 11 |
У меня есть библиотека, в которой происходит загрузка ресурса вот при помощи такого кода в статической функции:
Во время выполнения строки in.readObject ИНОГДА (в зависимости от того, в какой программе я использую библиотеку), возникает исключительная ситуация java.lang.ClassNotFoundException При этом, тот класс, который она не может найти, вроде бы, присутствует в наборе используемых библиотек. Такое впечатление, что в тот момент, когда выполняется указанная строка, джар с нужным классом просто ещё не подгрузился. Может ли такое быть? Или она просто обязана искать класс в тот момент, когда это требуется? |
|||
|
||||
ivg |
|
|||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 33 Всего: 81 |
Смотрите javadoc для метода ObjectInputStream.html#resolveClass(java.io.ObjectStreamClass)
1. Можно держать классы библиотеки и сериализуемых объектов в одном месте (неудобно). 2. Расширить класс java.io.ObjectInputStream и переопределить метод(ы) загрузки классов, чтобы можно было использовать определённый класс-лоадер. В качестве примера класс org.springframework.core.ConfigurableObjectInputStream Это сообщение отредактировал(а) ivg - 16.2.2009, 19:20 |
|||
|
||||
Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 4 Всего: 11 |
А как-то можно определить лоадер, который не может сработать, чтобы объективно сравнить работу в версии, когда библиотека работает и когда нет?
|
|||
|
||||
ivg |
|
|||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 33 Всего: 81 |
||||
|
||||
Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 4 Всего: 11 |
||||
|
||||
Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 4 Всего: 11 |
Вот я трассирую происходящее. Иду по вызовам функций. Везде один и тот же класслоадер. И вдруг -- бац -- в каком-то классе совершенно другой.
Конкретно у меня везде WebappClassLoader, а в нужном месте вдруг StandardClassLoader. Почему? |
|||
|
||||
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. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |