我可以动态卸载和重新加载(相同版本的其他版本)JAR吗?
2022-09-02 21:55:45
我正在编写一个服务器程序,用于运行API的单元测试(显示大量信息并提供Web访问以控制/监视整个事情)...
此 API 在编译时已知,并作为 JAR 提供。
为了能够比较不同版本的API的单元测试结果(无需重新启动服务器),我希望能够卸载API的“当前”版本,并重新加载较新的版本(或较旧的版本)。
我不想使用URLClassLoader并按名称
调用每个方法(使用getDeclaredMethod(“someMethod”)
),
因为服务器严重依赖API,并且以这种肮脏的方式“包装”每个方法调用会很复杂。
我在想:由于所有版本的JAR的所有接口都是相同的,难道我不能通过以某种方式重新加载另一个版本的JAR来做到这一点(没有那个按名称调用?)。
注意:我使用的是最新的 Java SE (6) 和 Java EE (5)。
如果您认为,我试图实现的目标是不可能的,请建议一个“解决方法”或其他概念。