我需要在运行时从配置文件中提供的路径添加一个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();
}
}
这种方法会奏效还是有任何建议可以做得更好。任何帮助表示赞赏。谢谢!
答案 0 :(得分:1)
这种方法有时用于在运行时加载JDBC驱动程序,您可以从该线程中获得一些启发:Loading JDBC Driver at Runtime
我想找出它是否适合您的罐子,只需尝试一下即可。但是我认为您的classloader hack应该适用于Java版本<9。
但是,从代码质量的角度来看,这不是一个非常干净的解决方案,我相信您已经知道。您是否考虑过研究OSGi?