代码之家  ›  专栏  ›  技术社区  ›  justinhj

所以我在运行时动态加载一个jar如何使用它?

  •  1
  • justinhj  · 技术社区  · 16 年前

    194698 演示如何在运行时加载jar文件,您可以加载单个命名类并获取类对象。现在我的问题是我希望能够将这些类转换为它们真正的类型,但是我不能,因为我不能使用导入,因为关键是在运行时而不是编译时加载它。

    似乎应该使用反射来发现函数和字段名,但这似乎很脆弱,因为jar文件中的API可能会发生变化,代码在运行之前不会中断。

    2 回复  |  直到 9 年前
        1
  •  3
  •   Péter Török    16 年前

    Runnable ). 这样,只要实现接口,它们的实现细节就可以自由更改。因此,将加载的类的实例强制转换到try块中的接口,捕获并处理 ClassCastException 如果类没有实现接口(上面提到的答案中没有显示,但是添加起来很简单),或者从此愉快地使用它。

        2
  •  1
  •   OscarRyz    16 年前

    如果您不知道哪些类可用,也不知道它们的接口是什么,那么您就不可能或很少可能使用它们(人们很难了解接口)

    通常,这个“扩展”模块被编码到一个特定的接口上,因此新加载的类总是有特定的方法(即,JDBC驱动程序总是希望找到一个 PreparedStatement 实施,a ResultSet 即使它不知道下面还有什么)

    在您的情况下,如果您想加载和使用任意类,我看到的唯一剩余的资源是提供一些机制来向发现的接口添加脚本语言(如Groovy、Jython或JRuby)和代码。