powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как заставить работать Class.forName(String) со совим ClassLoader
7 сообщений из 7, страница 1 из 1
Как заставить работать Class.forName(String) со совим ClassLoader
    #34674147
Олег Гапон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как заставить работать Class.forName(String) со совим ClassLoader ?

Такой вариант естесно не помогает
Thread.currentThread().setContextClassLoader(myLoader);
...
Рейтинг: 0 / 0
Как заставить работать Class.forName(String) со совим ClassLoader
    #34674182
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Class.forName без указания загрузчика использует тот загрузчик, которым был загружен класс вызывающий этот метод.
...
Рейтинг: 0 / 0
Как заставить работать Class.forName(String) со совим ClassLoader
    #34674256
Олег Гапон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему при таком раскладе
Код: plaintext
1.
2.
3.
 Class  testClass =  Class .forName("TestClass", true, myClassLoader);
System.out.println("ClassLoader: " + testClass.getClassLoader().getClass());


Выдаёт

Код: plaintext
1.
2.
ClassLoader:  class  sun.misc.Launcher$AppClassLoader


Я ведь загружал TestClass своим загрузчиком....
...
Рейтинг: 0 / 0
Как заставить работать Class.forName(String) со совим ClassLoader
    #34674386
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое поведение возможно если у myClassLoader был указан родительский загрузчик (sun.misc.Launcher$AppClassLoader). При запросе класса у myClassLoader последний делегирует поиск своему родителю. А сам ищет только если родителю не удалось найти класс. Судя по всем родитель его таки находит.

Это поведение можно предотвратить либо не указывая родительский загрузчик, либо переопределив соответствующие методы своего загрузчика. Дабы оный не делегировал поиск когда не надо кому не надо. Ж)
...
Рейтинг: 0 / 0
Как заставить работать Class.forName(String) со совим ClassLoader
    #34674403
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит он загрузился раньше. Либо myClassLoader==null.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 import  java.net.*;
 public   class  testCL
{
     public   static   void  main(String[] args)  throws  Exception
    {
        URLClassLoader cl = new  URLClassLoader( new  URL[] { new  URL("file:///d:/oracle/ora10201/jdbc/lib/ojdbc14.jar")});
         Class  c =  Class .forName("oracle.jdbc.driver.OracleDriver", true, cl);
        System.out.println(c.getClassLoader().getClass());
    }
}
Код: plaintext
 class  java.net.URLClassLoader
...
Рейтинг: 0 / 0
Как заставить работать Class.forName(String) со совим ClassLoader
    #34674406
Олег Гапон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо Blazkowicz !!!

Получилось !!!

Куда пиво отсылать ???
...
Рейтинг: 0 / 0
Как заставить работать Class.forName(String) со совим ClassLoader
    #34674421
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Олег ГапонСпасибо Blazkowicz !!! Получилось !!!
Ну, ждем вопросов про ClassCastException и другие интересности в среде с множеством загрузчиков.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как заставить работать Class.forName(String) со совим ClassLoader
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]