这是一个从 Web 下载的项目,我只是更改了路径以找到要使其动态加载的类。这是我尝试在运行时加载类的代码。但最终我得到了 ClassNotFoundException:
private static IExample newInstanceWithThrows() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
URLClassLoader tmp =
new URLClassLoader(new URL[] {getClassPath()}) {
public Class<?> loadClass(String name)
throws ClassNotFoundException {
if ("example.Example".equals(name)
|| "example.Leak".equals(name))
return findClass(name);
return super.loadClass(name);
}
};
return (IExample) tmp.loadClass("example.Example")
.newInstance();
}
private static URL getClassPath() {
String dir = "/Users/longtuan/develop/rjc2011/classes/";
try {
//return new URL(dir);
File path = new File(dir);
return path.toURL();
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
}
而类example.Example的路径是: /Users/longtuan/develop/java/rjc2011/classes/example
我使用的运行命令是: java -classpath ./bin example.Main
当前目录为: /Users/longtuan/develop/java/rjc2011
当前目录的所有东西都是这样的:
示例是我放置所有java文件的目录。我将编译的类文件放在目录bin中,除了类example.Example单独放在类中。
以上是我能提供的所有信息,感谢您的帮助。