2013-05-02 27 views
5

Tôi hiện đang tải các lớp Java bằng cách sử dụng Class.forName() để tải nó.Java Class.forName() từ thư mục xa

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

Nhưng bây giờ tôi muốn để tải các lớp từ thư mục khác nhau, tôi đã cố gắng để thiết lập classpath bởi

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

Với không thành công và ClassNotFoundException. Đường dẫn đầy đủ đến lớp xa là:

C:/dir/distantinterfaces/DistantClass.class 

Trả lời

8

Sử dụng số URLClassLoader cho việc này. Mã có thể là thứ gì đó nằm dọc theo các dòng:

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

Hoặc là thư mục là trong classpath, và bạn có thể sử dụng Class.forName() (mà chỉ nhận lớp tên fuly đủ điều kiện, và không -cp tùy chọn dòng lệnh), hoặc nó không phải là trong classpath và sau đó bạn nên sử dụng trình tải lớp tùy chỉnh.

Bạn không nói những gì bạn thực sự muốn làm (tại sao bạn tải các lớp động), nhưng đặt cược tốt nhất của bạn là có thư mục trong classpath.

Các vấn đề liên quan