Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Регистрация системного загрузчика


Автор: lazycat 27.10.2010, 03:22
Доброго времени суток всем!

Возникла совершенно неожиданная проблема. Надо написать собственный загрузчик классов. В принципе дело нехитрое, но когда попробовал зарегистрировать его как системный (-Djava.system.class.loader=мой_загрузчик), получаю исключение
java.lang.NoSuchMethodException: java.net.мой_загрузчик.<init>(java.lang.ClassLoader)

Решил поставить "чистый" эксперимент. Отказался от своего, ставлю в качестве системного URLClassLoader.
-Djava.system.class.loader=java.net.URLClassLoader
Тот же результат:
java.lang.NoSuchMethodException: java.net.URLClassLoader.<init>(java.lang.ClassLoader)

Я бы понял, если бы было исключение java.security.AccessControlException, а так в полном недоумении.

Подскажите, в какую сторону копать!

Заранее благодарен всем откликнувшимся.

Автор: Kircul 27.10.2010, 10:07
Ну насколько я вижу, требуется конструктор который принимает другой ClassLoader. У URLClassLoader такого нету, как видимо и у вашего загрузчика.

Автор: Skipy 27.10.2010, 11:56
А почему он должен быть системным? Вам зачем самостоятельно грузить Java Runtime?

Автор: Kircul 27.10.2010, 12:19
Может я конечно что-то не так понял, но судя по информации http://download.oracle.com/javase/6/docs/api/java/lang/ClassLoader.html#getSystemClassLoader%28%29, данный загрузчик не будет загружать JRE. а выполнять только обязаности которые он должен. А уже все что не должен, он сможет делегировать загрузчику по умолчанию.

И, да, тут написано:
Цитата
The class is loaded using the default system class loader and must define a public constructor that takes a single parameter of type ClassLoader which is used as the delegation parent.

Автор: lazycat 27.10.2010, 15:28
Действительно, проблема лишь в том, что нет конструктора с одним параметром ClassLoader. Как только я создал его, все заработало.

Большое спасибо всем откликнувшимся !!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)