Java - 从Jar文件中创建类

5
可以从jar文件中加载类并创建对象吗?
注意:程序编译时没有这个jar文件,但用户后来添加了它,并在用户启动程序时加载它。
我的代码如下:用户有一个仅包含已编译Java类的jar文件。然后,用户将此jar文件放在目录中,并启动我的程序,该程序查找此jar文件。然后,它加载此jar文件并从中创建一个类,然后创建一个对象并将其添加到数组中。
我已经做好了一切,除了从jar文件(作为java.io File)创建一个类,然后从该类创建一个对象。
需要帮助吗?谢谢。
2个回答

4
你正在寻找 Class#forNameClass#newInstance 方法。 这个链接 提供了一个很好的示例,演示如何通过类名初始化一个类(从链接中提取)。
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文件放在类路径中。
这样你的代码就可以访问将被jvm加载的类了。

编辑:即使是@Luiggi的答案也假定jar文件在类路径中。


1
但是这个想法是用户制作Jar文件,并将其加载到程序中,而不是由他来实现。 - Cody Richardson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接