是否可以从 jar 文件加载类,然后从中创建对象?
注意:jar文件在程序编译时并不存在,而是用户后来添加的,并在用户启动程序时加载进来的。
我的代码是这样的:用户有一个 jar 文件,里面只有一个已编译的 java 类。然后,用户将此 jar 文件放入一个目录中并启动我的程序,该程序将查找该目录并找到此 jar 文件。然后它加载这个 jar 文件并从中创建一个类,然后从中创建一个对象并将其添加到数组中。
除了从 jar 文件(作为 java.io 文件加载)创建一个类,然后从该类创建对象之外,我已经把所有东西都记录下来了。
有什么帮助吗?谢谢。
您正在寻找Class#forName http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#forName(java.lang.String)and Class#newInstance http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#newInstance()方法。
这个链接 http://www.xyzws.com/Javafaq/what-does-classforname-method-do/17提供了一个关于初始化知道其名称的类的好示例(从链接中提取):
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 的这个特定问题,有问题和答案:
- 我应该如何在运行时动态加载 Jars? https://stackoverflow.com/q/60764/1065197
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)