在运行时加载Jar并访问所有类

时间:2019-11-26 11:02:19

标签: java

我需要在运行时从配置文件中提供的路径添加一个jar。让我们称之为run-time.jar

我原来的罐子是original.jar。我直接从run-time.jar中的original.jar导入类。在编译时,我有一个run-time.jar的样本版本可以帮助我解决编译问题。我正在构建一个没有依赖项的瘦罐子。

我计划在运行时使用URLClassLoader来加载类。我在original.jar中的示例代码是

// Importing class from run-time.jar
import run.time.Test

class Original {

  public static void main(String[] args) {

    /*Code to load classes from jar file*/

    Test newTest = new Test(); 
    newTest.runTests(); 
  }
}

这种方法会奏效还是有任何建议可以做得更好。任何帮助表示赞赏。谢谢!

参考:How should I load Jars dynamically at runtime?

1 个答案:

答案 0 :(得分:1)

这种方法有时用于在运行时加载JDBC驱动程序,您可以从该线程中获得一些启发:Loading JDBC Driver at Runtime

我想找出它是否适合您的罐子,只需尝试一下即可。但是我认为您的classloader hack应该适用于Java版本<9。

但是,从代码质量的角度来看,这不是一个非常干净的解决方案,我相信您已经知道。您是否考虑过研究OSGi?