1

我的问题其实很简单,虽然答案可能很复杂。是否可以在运行时动态加载 jar,甚至替换 web 容器上下文中已经加载的 jar?在这种特定情况下,我对 Tomcat 和 Spring MVC 的组合很感兴趣,但我猜该技术(如果有的话)将适用于其他技术堆栈。

如果问题的答案是肯定的,那么紧随其后的问题是:哪种方法最直接?我知道 OSGi,我很确定它可以在 web 容器中动态加载 jar,但我认为这是一个重量级的解决方案。

4

1 回答 1

1

我不确定 JAR 是如何准确加载的,但您可以在运行时动态加载任何类。如果您对 JAR 中包含的类感兴趣,那么可以使用类加载器加载这些类。或者更具体地说是一个 JAR 类加载器JarClassLoader 类

如果您尝试替换 JAR,则该方法可能是替换从该 JAR 加载的类,唯一的方法是如果对这些类中的每一个的引用都是“垃圾收集”。此时,您可以从新位置加载相同的类。类卸载

与您类似的问题我应该如何在运行时动态加载罐子?

于 2013-08-05T18:30:28.820 回答