Поведение загрузчика пользовательских классов Java - PullRequest
0 голосов
/ 03 апреля 2019

Мне нужно настроить загрузчик классов существующего приложения, чтобы изменить его поведение, если выбрасывается ClassNotFoundException. Итак, я покопался в Google, я создал свой собственный загрузчик классов, который теперь просто печатает что-то при вызове функции, и я создаю пример приложения для его тестирования. Перед запуском приложения я установил свойство java.system.class.loader, чтобы сообщить JVM об использовании моего пользовательского загрузчика классов.

Тестовое приложение - это класс с методом main, который создает 3 экземпляра 3 разных классов.

Странно, что я не нахожу ссылки на эти 3 экземпляра в своем выводе, так как эти классы были загружены стандартным загрузчиком классов, а не моим.

Пользовательский загрузчик классов был взят из Заставьте JVM использовать Мой собственный загрузчик классов

Это тестовое приложение:

public class Main {
    public static void main(String args[] ) {
        try {
            Map <String,String> h = new HashMap<String,String>();
            Class1 c1 = new Class1();
            Class2 c2  = new Class2();            
            Class3 c3  = new Class3();            
            //  tmp = (char) System.in.read();
        } catch(Exception e) {
            System.err.println(e);
            e.printStackTrace(System.err);
        }
    }
}

После печати стандартного вывода: MyClassLoader: загружается mater.common.test.Main Я ожидал, что другие 3 строки как: MyClassLoader: загружается mater.common.test.Class1 но ничего не распечатывается. Классы загружены (я проверил с отладкой), но ничего не печатается.

Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...