2012-07-16 26 views
5

Czy można załadować klasę z pliku jar, a następnie utworzyć z niej obiekt?Java - Utwórz klasę z pliku JAR

Uwaga: Plik jar nie istnieje podczas kompilacji programu, ale jest później dodawany przez użytkownika i jest ładowany, gdy użytkownik uruchamia program.

Mój kod wygląda następująco: użytkownik ma plik JAR zawierający tylko skompilowaną klasę języka Java. Następnie użytkownik umieszcza ten plik jar w katalogu i uruchamia mój program, który przegląda katalog i znajduje ten plik jar. Następnie ładuje ten plik jar i tworzy z niego klasę, którą następnie tworzy obiekt i dodaje ją do tablicy.

Mam wszystko w dół, z wyjątkiem tworzenia klasy z pliku jar (ładowane jako plik java.io), a następnie tworzenia i obiektu z tej klasy.

Każda pomoc? Dzięki.

Odpowiedz

4

Poszukujesz metod Class#forName i Class#newInstance.

This link stanowi dobry przykład o inicjalizacji klasy znając jego nazwę (wyciąg z link):

Class c = Class.forName("com.xyzws.AClass"); 
AClass a = (AClass)c.newInstance(); 

Dobrym przykładem takiej sytuacji jest przy użyciu JDBC (jako link wskazuje również), bo zainicjować obiekt sterownika silnika bazy danych, który chcesz podłączyć. Pamiętaj, że ten sterownik pochodzi z zaimportowanego słoika do twojego projektu, może być słojem do MySQL, Oracle lub MSSQL Server, wystarczy podać nazwę klasy sterownika i pozwolić JDBC API i jarowi obsługiwać SQL.

Class.forName("org.gjt.mm.mysql.Driver"); 
Connection con = DriverManager.getConnection(url, "myLogin", "myPassword"); 

Również dla tego konkretnego problemu ładowanych dynamicznie słoik, istnieje pytanie i odpowiedź:

0

prostszy? byłoby, gdyby użytkownik umieścił plik jar w ścieżce klas.
ten sposób Twój kod będzie miał dostęp do tej klasy, który zostanie załadowany przez JVM

Edit: Nawet @ odpowiedź Luiggi zakłada, że ​​słoik jest w ścieżce klasy

+1

ale idea jest taka, że ​​użytkownik robi słoik do załadowania do programu, nie do niego –

Powiązane problemy