我的问题:处理两个不同版本的API的好方法是什么? (子问题:如果包含两个具有相同类名的库,有没有办法避免类路径引用问题?)
问题描述:我有一个使用API的项目。我花了最近几个月开发旧版本,我即将为新版本添加功能。据我所知,只有一个关键的区别。但是,我还没有API(等着有人拿我的罐子)所以我不能确定是否有更多的差异。
子问题描述:我担心两个API之间可能存在类引用不一致(就像我说的,我还没有确定jar)。
我意识到您可能需要查看一些代码,但这是一个设计问题,而不是编码问题。我希望得到一些最佳实践。谢谢!
答案 0 :(得分:3)
避免或遮挡。
如果您完全控制了类路径,则可以使用排序:这很脆弱且不直观。
如果你不这样做,你就会受到任何影响,因此阴影和相关的头痛。
答案 1 :(得分:2)
您还可以使用类加载器隔离策略。例如,如果您处于容器环境(Java EE,OSGi)中,则可以将不同版本的库放在不同的类加载器上下文中(即,不同的EJB jar或不同的Web应用程序),它们不会干扰每个其他
OSGi可以做同样的事情;将库A.1和A.2部署到OSGi容器中,并将project.uno(使用A.1)和project.dos(使用A.2)部署到同一个JVM中,OSGi容器处理类路径。