Исключение определенных классов из загрузчика классов контекста потока в Java?

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

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

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


person Jared    schedule 29.07.2011    source источник
comment
Можете ли вы использовать что-то вроде jarvana.com/jarvana/view/org/springframework/spring/2.5.6/ из весенней библиотеки?   -  person Amir Raminfar    schedule 29.07.2011


Ответы (1)


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

person chrisichris    schedule 29.07.2011