Мне нужно настроить загрузчик классов существующего приложения, чтобы изменить его поведение, если выбрасывается 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
но ничего не распечатывается.
Классы загружены (я проверил с отладкой), но ничего не печатается.
Что я делаю не так?