我正在创建一个 API 库,该库将部署到客户的本地应用程序中。此本地应用程序包含独立的插件模块,这些插件模块包含 API 库作为依赖项。每个应用程序可能有多个插件,因此有许多 API 库副本。
我希望能够灵活地发展 API 库,同时避免类加载器冲突。 OSGI 实现目前不是一个选项。我想知道是否有人在类路径中放置了版本控制信息,以创建类的不同实例化,以此来避免冲突。
例如
com.product.v2014_04 包中的 User.java(第 1 版)
com.product.v2014_05 包中的 User.java(第二版)
有没有人有这样做的经验,或者知道使用这种方法避免类路径冲突的任何流行实现?优点缺点?
非常感谢
最佳答案
Apache 使用他们的一些库来做到这一点。如果您查看旧版本的 commons-lang ( such as 2.6 ),这些包都位于 org.apache.commons.lang
中。不过,请获取它的当前版本 ( such as 3.3),您会注意到所有包都已重命名为 org.apache.commons.lang3
。
当我最近将一个应用程序从 2.6 迁移到 3.3 时,经历并修复我所有的导入语句有点痛苦,但它确实明白了这是一个主要版本更改,我需要付费注意我是如何使用代码的。
关于java - 类路径中的版本控制信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23301202/