如何根据传入参数加载不同的库?

时间:2010-07-13 10:58:57

标签: java design-patterns

我正在使用不同的库创建一个java客户端,它们是相同的基础,但具有不同的优化。

是否有可用于加载不同库的模式(或其他),例如:

java -jar myapp.jar 1(使用第1组中的库加载并导入正确并使用此库创建客户端)....

更新: 我尝试过OSGI,似乎它将jar作为服务加载。 我需要一种方法来在启动应用程序时加载非常相似的库。 该库具有完全相同的包/方法名称,但在某些计算方面有所不同。我需要拥有完全相同的客户端才能获得真实的结果。感谢

3 个答案:

答案 0 :(得分:0)

听起来有点像java.sql接口的想法可能有用。编写客户端使用的接口,然后创建一个根据JDBC驱动程序等特定参数加载的实现JAR。

答案 1 :(得分:0)

这听起来像OSGI的一个很好的用例。这是一些good tutorials。每个库都是一个单独的jar文件。 OSGI允许您根据需要加载或卸载每个jar。您可以在不重新启动应用程序的情况下即时交换库。

编辑:

Here is a good example app.

答案 2 :(得分:0)

作为OSGi的替代方法(这是一种很好的方法)你可以使用Java Web Start。如果你的依赖是静态的(也就是说你在运行时不会改变库版本)。 / p>

如果您遇到这种情况,就像动态生成JNLP文件一样简单,根据用户参数选择库版本。