java - 类路径中的版本控制信息

标签 java classloader

我正在创建一个 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/

相关文章:

Java Swing 在不同选项卡中重用按钮

ruby-on-rails - Rails 不会在反序列化 YAML/Marshal 对象时加载类

java - 如何在 OSGi 中找到类未找到问题的根本原因?

java - 如何使用 Maven 将所有必需的 JAR 文件放在最终 JAR 文件内的库文件夹中?

java - 无法使用 cp 命令复制所有文件

java - Java中如何获取字符串中双引号之间的字符串

java - SQL异常: Unexpected token for UcanaccessConnection.准备语句

java - jOOQ 与 java 15 : both interface org. jooq.Record 在 org.jooq 和类 java.lang.Record 在 java.lang 匹配

java - 自定义ClassLoader,如何使用?

java - Spring 5.1.2 PathMatchingResourcePatternResolver 检测 jar 根目录上的文件