在Java中支持2个API版本

Rob*_*Rob 6 java configuration-management

我正在尝试找到一种方法来支持我的代码库中的两个不同版本的API.它们具有相同的封装名称,但在引擎盖下工作方式有很大不同(两个完全不同的系统).我怎样才能做到这一点?

这两个API也依赖于Bouncy Castle,但它们使用不同的版本.我该如何考虑这一点?

Mr0*_*son 1

我开始的解决方案是...将 API 加载到自定义类加载器中,该类加载器首先加载子类而不是父类。如果您在 API 内编译 Bouncy Castle,则无需担心单独加载它。如果您在运行时动态加载 Bouncy Castle jar,则在自定义类加载器中,您可以将 Bouncy Castle 和您的 API 添加到该类加载器。使用URLClassLoader并查看下面的链接以获取父级上次加载的信息。

如何在 Java 中创建父最后/子优先 ClassLoader,或者如何覆盖父 CL 中已加载的旧 Xerces 版本?