【发布时间】:2017-11-01 20:46:08
【问题描述】:
这是一个复杂的问题,但我会尽力描述我的问题。
我需要在顶级类(v1.jar 和 v2.jar)中加载同一个 JAR 的 2 个版本,因此我可以访问这两个版本的 jar。这样做的原因是因为我想测试 v2.jar 中的任何功能是否从 v1.jar 回归
在我的顶级类中,我想调用 v1.jar 和 v2.jar 的方法,然后根据 v2 输出验证 v1 的输出。这样我就可以确定没有什么事情搞砸了。
class Common {
// Names of the classes would be the same so not sure how I would invoke the classes from the 2 different jars?
String resultv1 = EngineV1.run("a","b","c");
String resultv2 = EngineV2.run("a","b","c");
Assert.equals(resultv1, resultv2, "Regression has been introduced...");
}
我无法将 v1 和 v2 jar 作为 maven 依赖项导入,因为这会在 maven 中产生版本冲突,并且默认情况下 maven 将使用最新的 jar。所以我考虑创建一个通用接口并拥有该接口的 2 个不同的实现类。然后在顶层我可以使用类加载器来加载 v1 和 v2 jar 等。但是这种方式不起作用,因为我必须更改生产 v1.jar 来实现通用接口。
任何帮助或见解将不胜感激。如果可能的话,我非常想看看样品。并且请不要将我推荐给其他线程
【问题讨论】:
标签: java maven reflection jar classloader