5

是否可以从 jar 文件中加载一个类,然后从中创建一个对象?

注意:jar文件在程序编译的时候是没有的,是用户后期添加的,在用户启动程序的时候加载进去的。

我的代码是这样的:用户有一个 jar 文件,里面只有一个编译的 java 类。然后,用户将这个 jar 文件放在一个目录中并启动我的程序,该程序查看目录并找到这个 jar 文件。然后它加载这个 jar 文件并从中创建一个类,然后从中创建一个对象并将其添加到数组中。

除了从 jar 文件(作为 java.io 文件加载)创建一个类,然后从该类创建和对象之外,我已经完成了所有工作。

有什么帮助吗?谢谢。

4

2 回答 2

4

你正在寻找Class#forNameClass#newInstance方法。

此链接提供了一个关于初始化知道其名称的类的好示例(从链接中提取):

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

这些情况的一个很好的例子是使用 JDBC(正如链接也指出的那样),因为您初始化了要连接的 db 引擎驱动程序的对象。请记住,这个驱动程序来自一个导入到您的项目中的 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 的这个特定问题,还有问答:

于 2012-07-16T06:01:31.237 回答
0

更简单的?方法是让用户将 jar 文件放在类路径中。
这样,您的代码将可以访问将由 jvm 加载的类

编辑:即使@Luiggi 的回答也假设 jar 在类路径中

于 2012-07-16T06:03:11.720 回答