Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > ClassLoader |
Автор: Tony 17.12.2006, 01:41 | ||
Нужно организовать загрузку классов из каталога не зная полного названия класса(package). Тоесть есть папка(test) там класс. Путь D:/test/killer/Test.class .
Не как не могу его загрузить. ![]() |
Автор: tux 17.12.2006, 02:08 |
Честно говоря, совершенно не понял что ты хочешь сделать. Объясни подробнее. |
Автор: Tony 17.12.2006, 13:41 |
Кароче есть папка там лежат классы в пакетах. Я не знаю какие имена классов. Всё что я могу сделать это рекурсивно прочитать содержимое папок. Тоесть например есть папка test. Там лежат пакет: например killer. Я пробегаю рекурсией узнаюй с помищю file.listFiles(), что там есть какие то классы. Так вот имея путь к файлу например: d:/test/killer/Test.class. Мне нужно его загрузить. Kak загрузить? Постоянно вылитает: java.lang.NoClassDefFoundError |
Автор: shimopus 17.12.2006, 13:50 |
воспользовавшись дефолтным ClassLoader-ом |
Автор: LSD 17.12.2006, 13:51 | ||
|
Автор: tux 17.12.2006, 13:52 |
Ну откуда же класслоудер знает про эти твои классы? Конечно not found всегда будет. Если у тебя при запуске приложения каталог, где лежат классы известен, то просто можно добавить его в CLASS-PATH. Если нет, то придется реализовывать свой загрузчик классов. В FAQ есть пример как это сделать - http://vingrad.ru/JAVA-ART-002949. |
Автор: Tony 17.12.2006, 14:32 | ||||
Пробывал и свой и твой вариант. Не прокатывает. |
Автор: LSD 17.12.2006, 14:36 |
Что значит "не прокатывает", ошибки или что? |
Автор: Tony 17.12.2006, 14:40 |
Написал.По не внимательности не работало. Всем большое спасибо. |
Автор: DOKA 30.8.2007, 03:08 | ||||
А что делать если загружаемый мною класс Class1 является наследованым от моего абстрактного Class2? При попытке загрузить такой класс мне программа выдаёт ошибку загрузки класса Class2, насмотря на то, что он прикомпилирован к моей программе! Может его нужно как-то предварительно загрузить в память? По сути у меня суть - плагины. Есть опубликованый класс Class2 и все, кто хочет написать плагин, наследуются от него и кидают класс в определённую директорию. |
Автор: kkorsakoff 30.8.2007, 10:24 |
Значит либо твой лоадер должен знать, откуда и ак загрузить Class2, либо если он не знает, передавай загрузку его родителю. (уж он то знает хоть? ![]() |
Автор: DOKA 30.8.2007, 23:08 | ||
Вот я и спрашиваю, как это сделать? ![]() |
Автор: DOKA 1.9.2007, 14:38 | ||
Вопрос снят. После прочтения манов по ClassLoader выяснилось, что необходимо создавать этот сласслоадер так:
|