Исключение определенных классов из загрузчика классов контекста потока в Java? - PullRequest
1 голос
/ 29 июля 2011

Если у меня есть программа, вызываемая следующим образом

java -cp a.jar;b.jar;c.jar MainClass

Все классы из a.jar, b.jar и c.jar будут доступны для всех потоков в моей программе.Я хотел бы иметь поток, который создается в какой-то момент во время выполнения моей программы с ограниченным набором доступных классов, исключая большинство классов в a.jar, b.jar и c.jar.Есть ли способ сделать это, либо добавив необходимые классы в загрузчик классов, который не содержит всего из системного пути к классам, либо взяв загрузчик классов и удалив из него группу классов?Единственный вариант, о котором я знаю в настоящее время, - это написать класс начальной загрузки и загрузить требуемый путь к классу для каждого потока при инициализации JVM.Я упускаю что-то очевидное или загружаю свой единственный вариант?

1 Ответ

1 голос
/ 29 июля 2011

Вы можете написать собственный ClassLoader (то есть, расширяющий URLClassLoader), который генерирует исключения ClassNotFound в loadClass (имя String) для классов, которые вы не хотите использовать в пути.Установите это как contextClassLoader и загрузите Runnable потока из него.

...