【问题标题】:Java - Create a Class from a Jar FileJava - 从 Jar 文件创建类
【发布时间】:2012-07-14 23:20:07
【问题描述】:

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

注意:jar文件在程序编译时并不存在,是用户后期添加的,用户启动程序时加载进来的。

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

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

有什么帮助吗?谢谢。

【问题讨论】:

    标签: java oop class


    【解决方案1】:

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

    This link 提供了一个很好的例子来初始化一个知道类名的类(摘自链接):

    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的具体问题,还有问答:

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 但想法是用户将jar加载到程序中,而不是他
      猜你喜欢
      • 2015-04-24
      • 2011-06-03
      • 2015-09-09
      • 2019-01-22
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 2010-10-22
      • 2014-01-17
      相关资源
      最近更新 更多