【发布时间】:2020-05-12 20:47:25
【问题描述】:
我们有一个依赖于特定库的 Java 程序。我们创建了第二个库,其 API 与第一个库非常相似,但是,这个库是内部制作的,我们已准备好开始对其进行测试。
为了测试,我们想用我们新库的 jar 替换 Java 程序中的 jar。问题是新库没有完全相同的命名空间,因此导入语句不会对齐。例如,
Java 程序
import someLibrary.x.y.Foo;
public class Main {
public static void main(String[] args){
new Foo().bar();
}
}
新库具有相同的 API 但不同的命名空间
anotherLibrary.x.y.Foo;
问题:如何使用类加载器或其他工具来运行 Java 程序但替换依赖项并将导入语句重定向到另一个命名空间?
[编辑] - 我们无权访问 Java 程序的源代码。我们可以更改此程序以使用我们的新库,但在彻底测试之前我们不想这样做。
【问题讨论】:
-
如果您创建了第二个库,而您只需要其中一个,那么将您自己的库的包重命名为正确的包名不是更容易吗?
-
编写一个程序/脚本,可以扫描所有文件并用新文件替换旧文件。
标签: java api jar classloader