2012-07-16 129 views
5

是否可以從jar文件加載一個類,然後從中創建一個對象?Java - 從jar文件創建一個類

注意:程序編譯時,jar文件不存在,但稍後由用戶添加並在用戶啓動程序時加載。

我的代碼喜歡這個:用戶有一個jar文件,其中只有一個編譯的java類。然後用戶將這個jar文件放在一個目錄中,並啓動我的程序,它通過目錄查找並找到這個jar文件。然後它加載這個jar文件並從它創建一個類,然後它從中創建一個對象並將其添加到數組中。

除了從jar文件創建一個類(作爲java.io文件加載),然後創建並從該類中創建對象之外,我已經擁有了一切。

任何幫助?謝謝。

回答

4

您正在尋找Class#forNameClass#newInstance方法。

This link提供有關初始化類知道它的名字(從鏈接中提取)一個很好的例子:

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

一個很好的例子,這些情況是使用JDBC(爲紐帶還指出),因爲你初始化要連接的數據庫引擎驅動程序的對象。請記住,此驅動程序來自導入的jar到您的項目中,它可能是MySQL,Oracle或MSSQL Server的jar,您只需提供驅動程序類名稱並讓JDBC API和jar處理SQL工作。

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

另外,動態加載的jar這個具體問題,有問題和答案:

0

一個更簡單?方式是讓用戶把jar文件放在classpath中。
這樣,你的代碼將有機會獲得,將被JVM加載的類

編輯:即使@ Luiggi的回答假設罐子在classpath

+1

但這個想法是用戶做出的jar被加載到程序中,而不是他 – 2015-08-07 19:56:02