![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Lunokhod |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 22.7.2012 Репутация: 1 Всего: 1 |
Уважаемые коллеги, добрый день!
Возникла такая задача: Необходимо загрузить в программу класс из файла .class не имея полного имени класса, включая имя пакета (например com.myexample.myclass). Изсестно только краткое имя (только myclass). ClassLoader не принимает байткод с кратким именем в методе defineClass. Однако, полное имя класса содержится в самом файле .class. Подскажите, как его оттуда вытащить программным способом? Или есть какое-то другое решение? Спасибо! Это сообщение отредактировал(а) Lunokhod - 16.12.2015, 23:32 |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Прочитайте в двоичном коде файла .class
|
|||
|
||||
| Lunokhod |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 22.7.2012 Репутация: 1 Всего: 1 |
И что будет? Как двоичный код поможет получить полное имя класса? Это сообщение отредактировал(а) Lunokhod - 17.12.2015, 17:00 |
|||
|
||||
| Lunokhod |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 22.7.2012 Репутация: 1 Всего: 1 |
Ответ нашелся на иностранном форуме.
Файл .class можно парсить при помощи следующих классов из библиотеки Апача BCEL: org.apache.bcel.classfile.ClassParser; org.apache.bcel.classfile.JavaClass; JavaClass содержит кучу информации о файле, в том числе и длинное имя, которое потом можно подсунуть вместе с байткодом класса в метод ClassLoader-а defineClass. |
|||
|
||||
![]()
|
| Правила форума "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. |