是否有可能从一个jar文件中加载类,然后从它创建一个对象?
注:jar文件是不是有当程序被编译,而是由用户以后添加,并在用户启动程序被加载。
我的代码都喜欢这样的:用户有没有一个jar文件,但它编译的Java类。 然后,用户放在一个目录这个jar文件,并开始我的计划看起来通过目录,发现这个jar文件。 然后,它加载这个jar文件并创建从它的一类,它然后从创建对象,并将其添加到阵列。
我所拥有的一切,除了下创建从JAR文件中的类(加载为java.io文件),然后从该类创建和对象。
任何帮助吗? 谢谢。
你要找的Class#forName
和Class#newInstance
方法。
该链接提供关于初始化类知道其名称(来自链路中提取)一个很好的例子:
Class c = Class.forName("com.xyzws.AClass");
AClass a = (AClass)c.newInstance();
针对这些情况一个很好的例子是使用JDBC(为纽带还指出),因为你初始化你要连接的数据库引擎驱动的对象。 记得比这个司机来自导入罐子到项目,它可能是一个罐子到MySQL,Oracle或MSSQL Server,您只需要提供驱动程序类的名称,并让JDBC API和罐子处理SQL工作。
Class.forName("org.gjt.mm.mysql.Driver");
Connection con = DriverManager.getConnection(url, "myLogin", "myPassword");
另外,动态加载的jar这个具体问题,有问题的回答:
一个更简单? 办法是为用户把jar文件在类路径中。
这样,你的代码将有机会获得,将被JVM加载的类
编辑:即使@ Luiggi的回答假设罐子在classpath