我有一个长期存在的程序,需要在运行时动态更新类路径。
没问题 - 类加载器是一个 URLClassLoader,我调用了“addURL”方法。这一切都适用于一次“更新”迭代。
稍后,当下一个“更新”到来时,我希望能够恢复原始类路径,然后使用更新的条目重复调用“addURL”的过程。然后这个过程在几天/几周后重复。我要克隆原始的类加载器吗?我正在尝试做的事情可能吗?好像任何人都无法分辨,我对类加载器做的不多,而且很茫然。我正在从 java jar 文件运行 groovy,因此直接使用 Java 或 Groovy 解决方案都可以!
编辑
根据下面的问题。为了继续正确运行,我需要“刷新”我对类路径所做的原始更改,否则可能会在更新后无意中拾取这些更改。另外,我担心类路径上同时有多个版本的相同 jar。示例:在第一次加载时,我添加了 myJar1、myJar2 和 log4j(<- 即不是我的一个 jar 文件),在下一次更新时,我可能需要添加 myJar1 和 myJar2 的更新版本,以及 myJar3 和 log4j . 这更有意义吗?