我有多个从目录中的各种包中编译的 Java 类文件,就像这样。
C:/classes/package/A.class
C:/classes/package/B.class
C:/classes/package/subpackage/C.class
C:/classes/package/subpackage/D.class
我正在尝试使用这样的 URLClassloader 加载它们。
URLClassloder classloader = new URLClassLoader(new URL[]{new File("C:/classes/").toURI().toURL()});
System.out.println("Loading classes...");
classloader.loadClass("package.A");
classloader.loadClass("package.B");
classloader.loadClass("package.subpackage.C");
classloader.loadClass("package.subpackage.D");
System.out.println("Loaded classes.");
这段代码运行良好,直到我尝试加载“package.subpackage.D”。该程序永久挂起。
更改加载类的顺序没有任何效果,但经过大量实验,我发现任何扩展本机类的类都会导致这种挂起,“本机”指的是运行时中已经存在的所有类。
所以这是我的问题:
这是在运行时加载类的正确方法吗?
有解决问题的方法吗?
感谢您的时间。