【发布时间】:2009-07-22 18:36:58
【问题描述】:
我想创建一个 Java 项目,该项目将构建在一些供应商 API 之上。 API 连接到运行上述供应商软件的服务器并执行各种操作。
我有 2 个不同版本的服务器,由 2 个不同的 API 版本支持。对 API 的任何更改仅在内部实现中。 IE。我在旧版本中可用的类、接口、方法等存在于新版本中。因此,我编写的代码应该使用任一 API 版本编译和运行。使用 API 进行连接时,向服务器提供的 API 中有一个版本号,可防止您在该特定服务器上使用不同版本的 API。
有没有办法在运行时动态切换 JAR 文件? (类似于 c/c++ DLL??)
如果无法在运行时切换 API 版本,那么处理该问题的最优雅方法是什么。构建代码 2x(每个 api 版本一个)?
我希望我遗漏了一些东西,但方法 2 似乎并不理想。下面是一个更具体的例子:
package org.myhypotheticalwrapper.analyzer;
import org.myhypothetical.worker;
import org.myhypothetical.comparator;
public class Analyzer {
Worker w1 = new Worker();
Worker w2 = new Worker();
Comparator c = new Comparator(w1.connectAndDoStuff(),w2.connectAndDoStuff());
c.generateReport();
}
这是我的困境。我希望 w1 使用旧 API 构建,w2 使用新 API 构建,以便它们可以连接到适当的服务器。除了它们所在的 API 之外,它们是相同的(相同的代码)。我是否必须为 W1 和 W2 创建两个唯一命名的类类型,即使它们的代码相同,只是为了适应不同的 API 版本?如果我有许多想要与之交互的 API 版本,这似乎会很快变得笨拙。
非常感谢任何建议和cmets。
-新人
【问题讨论】:
标签: java dll build classloader