如果我在运行时使用 URLClassLoader 从文件中加载一个类:
ClassLoader classLoader = new URLClassLoader(new URL[] { classesUrl }, getClass().getClassLoader());
String name = fileName.replace("\\", ".").replace("/", ".").substring(0, s.lastIndexOf("."));
System.out.println("loading class " + name);
Class c = classLoader.loadClass(name);
System.out.println("loaded " + c.getCanonicalName()); // 1
这似乎工作 - 输出1
is loaded com.robert.test.NumberUtil
。
如果我然后尝试使用创建该类的实例
Class.forName("com.robert.test.NumberUtil");
我得到一个ClassNotFoundException: com.robert.test.NumberTest
. 我正在尝试做的事情可能吗?或者我是否必须使用该类1
(即使用从返回的对象classLoader.loadClass()
,一旦超出范围重新加载它?)。