3

我的问题:处理两个不同版本的 API 的好方法是什么?(子问题:如果包含两个具有相同类名的库,有什么方法可以避免类路径引用问题?)

问题描述:我有一个使用 API 的项目。在过去的几个月里,我一直在为旧版本进行开发,并且即将为新版本添加功能。据我所知,只有一个关键区别。但是,我还没有 API(等待有人给我拿罐子),所以我不能确定是否还有更多差异。

子问题描述:我担心这两个 API 之间可能存在类引用不一致(就像我说的,我还没有确定的 jar)。

我知道您可能希望查看一些代码,但这是一个设计问题,而不是编码问题。我希望从中获得一些最佳实践。谢谢!

不是重复的:查看一些可能看起来重复的问题,但它们并没有真正解决我的问题:)

4

2 回答 2

3

避免,或遮荫。

如果您可以完全控制类路径,则可以使用排序:这是脆弱且不直观的。

如果你不这样做,你就会受到任何东西的摆布,因此会出现阴影,以及与之相关的头痛。

于 2012-07-03T12:53:22.623 回答
2

您还可以使用类加载器隔离策略。例如,如果您处于容器环境(Java EE、OSGi)中,您可以将不同版本的库放在不同的类加载器上下文(即不同的 EJB jar 或不同的 Web 应用程序)中,它们不会相互干扰其他。

OSGi 可以做同样的事情。将库 A.1 和 A.2 部署到您的 OSGi 容器中,并将 project.uno(使用 A.1)和 project.dos(使用 A.2)部署到同一个 JVM 中,OSGi 容器处理类路径。

于 2012-07-03T13:00:07.593 回答