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

Java 在运行时加载Jar并访问所有类,java,Java,我需要在运行时从配置文件中提供的路径添加一个jar。让我们称之为run-time.jar 我原来的jar是original.jar。我直接在我的original.jar中从run-time.jar导入类。在编译时,我有一个run-time.jar的示例版本来帮助我解决编译问题。我正在构建一个没有依赖项的瘦罐子 我计划使用URLClassLoader在运行时加载类。我在original.jar中的示例代码是 // Importing class from run-time.jar import r

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

我原来的jar是
original.jar
。我直接在我的
original.jar
中从
run-time.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(); 
  }
}
这种方法有效吗?或者有没有更好的建议。感谢您的帮助。谢谢


参考:

这种方法有时用于在运行时加载JDBC驱动程序,您可以从这个线程中得到一些启示:

我想看看这对你的罐子是否管用,试试看。但我认为你的类加载器黑客应该适用于Java版本<9


然而,从代码质量的角度来看,这并不是一个非常干净的解决方案,我相信您已经意识到了这一点。你考虑过研究OSGi吗

是:
URLClassLoader
是一种方法。正确的方法是使用。您不应该直接读取.jar文件来加载其类。