2013-05-02 67 views
5

我目前正在使用Class.forName()加載Java類來加載它。來自遠程目錄的Java Class.forName()

clazz = Class.forName("interfaces.MyClass"); 

但現在我想加載來自不同目錄中的類,我試圖通過

clazz = Class.forName("-cp \"C:/dir\" distantinterfaces.DistantClass"); 

設置classpath中,但沒有成功和ClassNotFoundException。到遙遠的類的完整路徑是:

C:/dir/distantinterfaces/DistantClass.class 

回答

8

爲此使用URLClassLoader。代碼可能是沿着以下幾點:

File f = new File("C:/dir"); 
URL[] cp = {f.toURI().toURL()}; 
URLClassLoader urlcl = new URLClassLoader(cp); 
Class clazz = urlcl.loadClass("distantinterfaces.DistantClass"); 
3

無論是目錄在類路徑中,你可以使用Class.forName()(只接受fuly限定名稱類,而不是-cp命令行選項),或者它不是在classpath然後您應該使用自定義類加載器。

你不是在說你真正想做什麼(你爲什麼要動態加載類),但最好的辦法是在classpath中加入目錄。