2013-05-02 24 views
5

Aktualnie ładuję klasy Java przy użyciu Class.forName(), aby je załadować.Java Class.forName() z odległego katalogu

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

Ale teraz chcę, aby załadować klas z innym katalogu, starałem się ustawić ścieżkę klasy przez

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

bez powodzenia i ClassNotFoundException. Pełna ścieżka do odległej klasy jest:

C:/dir/distantinterfaces/DistantClass.class 

Odpowiedz

8

Do tego celu należy użyć URLClassLoader. Kod może wyglądać tak:

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

czy katalog jest w ścieżce klasy, i można użyć Class.forName() (który akceptuje tylko fuly wykwalifikowanych klas Nazwa, a nie -cp Opcje wiersza poleceń), czy to nie jest w ścieżce klasy i powinieneś wtedy użyć niestandardowego programu ładującego klasy.

Nie mówisz, co naprawdę chcesz zrobić (dlaczego dynamicznie ładujesz klasy), ale najlepiej jest mieć katalog w ścieżce klas.

Powiązane problemy