问题是下一步:我从here拿到基类加载程序代码。但是我的classLoader从某个角度来说是特定的,它必须能够从文件系统加载类(让我们来看看WinOS),所以在classLoader中必须使用一些方法,它设置一个路径(文件系统上的一个目录),我们将加载类(只有* .class,没有罐子)。这里是代码,它从一个链接修改装载机(你可以看到,只有loadClass的修改),但它不能正常工作:自定义类加载程序问题
public void setAdditionalPath(String dir) {
if(dir == null) {
throw new NullPointerException("");
}
this.Path = dir;
}
public Loader(){
super(Loader.class.getClassLoader());
}
public Class loadClass(String className) throws ClassNotFoundException {
if(Path.length() != 0) {
File file = new File(Path);
try {
// Convert File to an URL
URL url = file.toURL();
URL[] urls = new URL[]{url};
// Create a new class loader with the directory
ClassLoader cl = new URLClassLoader(urls);
ClassLoader c = cl.getSystemClassLoader();
Class cls = c.loadClass(className);
return cls;
} catch (MalformedURLException e) {
} catch (ClassNotFoundException e) {
}
}
return findClass(Path);
}
我会感激,如果有人可以帮助:)
什么错误(S)。用很少的信息来调试它可能很困难。 – 2012-03-06 21:18:13
@Legend首先我设置一个目录的路径值,其中有一些类。然后我用这个目录中的一个类调用classloader,但是它在这些行的某些行中返回一个NPE(NullPointerException)'ClassLoader cl = new URLClassLoader(urls); ClassLoader c = cl.getSystemClassLoader(); Class cls = c.loadClass(className);' – pikachu 2012-03-06 21:36:49
我不能说我的解决方案是正确的。我想要获得的主要结果是我的类加载器将能够从我在该方法中设置的文件目录中加载类,否则将调用父类加载器。 – pikachu 2012-03-06 22:07:36