Java URLClassLoader:选择要导入的类

时间:2013-08-31 14:53:21

标签: java jar urlclassloader

目前我正在使用此行加载第三方JAR并将其包/类添加到我的程序

URL [] urls = new URL [] { "http://..." };
new URLClassLoader(urls);

我使用这种方法的问题是加载了整个JAR,这意味着导入了所有包和所有类。 如何告诉URLClassLoaded只加载几个选定的类?

一个例子就是像这样的JAR层次结构

  • 包装A.
    • 1级
    • class 2
  • 包装B.
    • 1级
    • class 2
    • 3级
    • class 4

我想做的事情就像“仅导入A. *和B.class2”

1 个答案:

答案 0 :(得分:1)

提供 ClassLoader的自定义实现

重写类加载器的findClass()方法并应用业务逻辑来选择要加载的类。

class CustomClassLoader extends ClassLoader {

         public Class findClass(String name) {
             if(shouldBeLoaded)
                return defineClass(name, b, 0, b.length);
         }
    }

将此设置为加载的默认类加载器(可选)

java -Djava.system.class.loader
    =com.test.CustomClassLoader