0

目前我正在使用这条线来加载第 3 方 JAR 并将其包/类添加到我的程序中

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

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

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

  • 包 A
    • 1级
    • 2 级
  • 包 B
    • 1级
    • 2 级
    • 3 级
    • 4级

我想做一些类似“只导入 A.* 和 B.class2”的事情

4

1 回答 1

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
于 2013-08-31T14:55:17.663 回答