2012-07-16 115 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