![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| APXEOLOG |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.4.2007 Где: Мурманск Репутация: нет Всего: 1 |
Существует необходимость не включать часть классов в jar файл. Причем именно на этапе сборки jar'a, при компиляции они присутствуют, как и ссылки на них по всему коду. Затем в программе я пробую загрузить нехватающие классы из другого источника с помощью своего ClassLoader'a, что успешно происходит. Однако когда программа пытается обратиться к этим классам из кода, вылетает NoDefClassExceprtion. Я пробовал ставить свой лоадер дефолтным для потока (проблема в том что в приложении много потоков), но это не помогло... В чем может быть проблема, может быть кто-то знает решение? И еще вопрос, есть ли вариант назначить лоадер для всех потоков создающихся в программе?
--------------------
Ученые долго не знали как назвать частоту.Потом так и назвали Hz. |
|||
|
||||
| Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 6 Всего: 16 |
А чем вызвана необходимость?
|
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Если эти классы должны находиться в другом jar, и путь до этого jar известен при компиляции, добавь в манифест
Если не известен - указывай путь из командной строки. |
|||
|
||||
| APXEOLOG |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.4.2007 Где: Мурманск Репутация: нет Всего: 1 |
Это механизм защиты добавленного в программу кода. Эти классы подгружаются по интернету после аутентификации пользователя. Так как защита навешивается на уже готовую программу мне бы хотелось минимизировать изменения в коде. Классы запакованы в специальном бинарном формате который парсится внутри программы. --------------------
Ученые долго не знали как назвать частоту.Потом так и назвали Hz. |
|||
|
||||
| aleksandy |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 260 Регистрация: 17.12.2006 Репутация: 4 Всего: 5 |
Распаковывай классы во временные файлы и грузи обыкновенным URLClassLoader-ом |
|||
|
||||
| APXEOLOG |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.4.2007 Где: Мурманск Репутация: нет Всего: 1 |
Насколько я понял документацию, лоадеры не смотрят по нисходящей, только по восходящей иерархии. А так как jar файл загружается системным загрузчиком, даже наследуя от него кастомный лоадер и загружая в него классы, я все равно буду получать NoDefClassException в моем коде...
--------------------
Ученые долго не знали как назвать частоту.Потом так и назвали Hz. |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Приложения на модульной, плагинной архитектуре (OSGi, Netbeans Platform) примерно так работают. Сначала стартует контейнер плагинов. Потом он в рантайме загружает-выгружает необходимые плагины. Плагины в виде jar-ов доступны из сети по известным контейнеру адресам. Контейнер сам управляется с класслоадерами. Очевидно, готовую программу можно перевести на плагинную архитектуру постепенно. Начать можно с того, чтобы готовая программа по отношению к контейнеру стала плагином. Пользователь будет запускать контейнер, контейнер будет запускать единственный плагин. Ничего пока не изменилось. Преимущества появятся, когда мы начнем делать добавки, которые должны быть оформлены как отдельные плагины. Главная программы может общаться с плагинами только через контейнер, поэтому ее тоже придется менять, но это будут постепенные изменения, по мере добавления плагинов. Не требуется сразу разбивать всю главную программу на плагины. Это сообщение отредактировал(а) COVD - 30.11.2011, 18:51 |
|||
|
||||
![]()
|
| Правила форума "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. |