問題是下一步:我從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