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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка классов 
V
    Опции темы
Alexandr87
Дата 13.1.2010, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

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



Ситуация такая.
Ни по своей воле, есть два .jar архива, в которых лежат разные классы с одинаковыми именами. Модифицировать их нельзя.
При этом один из архивов должен лежать в %JRE_HOME%/lib/ext - т.е. по-умолчанию попадает в CLASSPATH.
Второй архив лежит рядом с программой и добавляется в CLASSPATH в файлеке MANIFEST.INF архива программки. Так вот, эта программка зараза, грузит не тот архив, который прописан у нее в MANIFEST.INF, а тот, который лежит в /lib/ext. Как можно сказать программке, чтоб брала она именно этот архив?
PM Jabber   Вверх
MaxPayneC
Дата 13.1.2010, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Никак, это невозможно. Единственная полуальтернатива - это выгружать класслоадером ненужный класс, и загружать нужный. Но я не уверен, что и это возможно из заданного jar, а не из заданного пакета.
PM   Вверх
dobrolub
Дата 14.1.2010, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

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



1. Попробуй с параметером -Xbootclasspath  (java -X for help)
2. Если есть возможность - написать загрузчик с альтернативным класс-лоадером который и будет делать всё правильно.


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


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

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



Цитата(dobrolub @  14.1.2010,  04:38 Найти цитируемый пост)
1. Попробуй с параметером -Xbootclasspath  (java -X for help)

спасибо, то что доктор прописал
использовал
Код


    -Xbootclasspath/p:<directories and zip/jar files separated by ;>
                      prepend in front of bootstrap class path


PM Jabber   Вверх
ivanovpv
Дата 14.1.2010, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


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

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



Цитата(Alexandr87 @  13.1.2010,  14:19 Найти цитируемый пост)
При этом один из архивов должен лежать в %JRE_HOME%/lib/ext - т.е. по-умолчанию попадает в CLASSPATH.
Второй архив лежит рядом с программой и добавляется в CLASSPATH в файлеке MANIFEST.INF архива программки. Так вот, эта программка зараза, грузит не тот архив, который прописан у нее в MANIFEST.INF, а тот, который лежит в /lib/ext. Как можно сказать программке, чтоб брала она именно этот архив? 


Есть один трюк из разряда чистого хака. JAR - это ведь с точки зрения ОС обычный архив содержащий некие файлики. Дык вот - берем из JAR'а в lib/ext нужный .class файл и заменяем его на тот который лежит в архиве рядом и прописан в MANIFEST.INF


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

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

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


 




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


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

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