JAR/CLASS, implementacja interfejsu

0

Mam mini-bibliotekę z interfejsem oraz aplikację. Aplikacja ta ma np. JFileChooser z filtrami plików .CLASS i .JAR. Moje zadanie to wykrycie w jakiś magiczny sposób, czy wybrany plik .CLASS (lub klasa główna .JAR) implementuje interfejs, a jeśli tak, to utworzyć obiekt klasy i wywołać metodę z interfejsu.

Do tej pory wykorzystywałem w taki sposób jedynie klasy znajdujące się wewnątrz mojej aplikacji, ale muszę mieć możliwość wywoływania klas z zewnątrz, wybranych przez użytkownika.

W jaki sposób to zrobić?

0

Class.forName()?

1

Proponuje stworzyć własny classLoader na podstawie URLClassLoader za pomocą którego będziesz mógł wczytywać klasa z dowolnej lokalizacji

0

Możesz uruchamiać program tak java -cp katalog1;katalog2;. TwojaKlasa, gdzie katalog1,katalog2,.. to lista wszystkich katalogów, z których chcesz odczytywać klasy.
Możesz też w metodzie main umieścić taki wiersz:

System.setProperty("java.class.path",System.getProperty("java.class.path")+";katalog1;katalog2");

Jeśli używasz Linuksa, to zamień średniki na dwukropki.

0

java -cp C:/Programy/Java;Katalog;. TwojaKlasa, a w programie

Class.forName("abc.Test")

Odpowiedź dotyczy pytania, które w międzyczasie wyparowało.

0

Można zamknąć.

URLClassLoader do wczytania lokalizacji klasy, później loadClass().

1 użytkowników online, w tym zalogowanych: 0, gości: 1