Скажем, у меня есть три класса: example.ClassA, example.ClassB и example.ClassLoader. ClassA выводит пример импорта HelloWorld и ClassB.ClassA и вызывает свой метод main(). Если я это сделаю:
java -cp Example.jar -Djava.system.class.loader = example.ClassLoader example.ClassA
Он работает и использует мой загрузчик классов. Однако, если я это сделаю:
java -cp Example.jar -Djava.system.class.loader = example.ClassLoader example.ClassB
ClassB использует мой загрузчик классов, но ClassA (который был импортирован ClassB) загружается с помощью загрузчика класса по умолчанию.
Можно ли заставить Java всегда использовать мой загрузчик классов (если явно не указан другой загрузчик классов)?
EDIT: Спасибо Paŭlo Ebermann ниже, я решил, что проблема заключается в том, что я вызываю загрузчик родительского класса (URLClassLoader) для загрузки классов, которые мне не нужно касаться, и эти загруженные классы устанавливают это как загрузчик контекстного класса, поэтому классы, импортированные из него, используют загрузчик родительского класса моего пользовательского загрузчика. (сбивает с толку, извините) Теперь я могу заставить его работать с помощью ручного чтения в классе EVERY, однако он кажется лишним, поскольку я скопировал код URLClassLoader напрямую. Есть ли способ рассказать загрузчику родительского класса, чтобы найти и определить класс, но установить загрузчик класса контекстного класса Class на свой собственный?