从Java中线程的上下文类加载器中排除某些类?

时间:2011-07-29 19:05:29

标签: java classpath classloader

如果我按以下方式调用程序

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

a.jar,b.jar和c.jar中的所有类都可用于我程序中的所有线程。我希望在程序运行期间的某个时刻创建一个可用的有限类可用的线程,不包括a.jar,b.jar和c.jar中的大多数类。有没有办法通过将所需的类添加到不包含系统类路径中的所有内容的类加载器,或者使用类加载器并从中删除一堆类来实现此目的?我目前唯一知道的选项是编写一个bootstrap类,并在JVM Initialization中为每个线程加载所需的类路径。我错过了一些明显的东西,或者是我唯一的选择吗?

1 个答案:

答案 0 :(得分:1)

您可以编写一个自定义的ClassLoader(即扩展URLClassLoader),它会在loadClass(String name)中为您不希望在路径上的类抛出ClassNotFound异常。将其设置为contextClassLoader并从中加载线程的Runnable。