同一库 Jars 的多个版本:类加载器处理
管理同一库的多个版本(例如,httpclient)可能会给 Java 带来挑战由于类加载。当项目中的不同框架依赖于该库的特定主要版本时尤其如此。
类加载器如何处理这个问题?
Java 类加载器尝试解决基于其二进制名称的类。如果不同加载的 JAR 中存在多个具有相同二进制名称的类,则适用以下规则:
类加载器隔离
类加载器默认保持隔离。这意味着一个类加载器加载的类不能直接访问另一个类加载器加载的类。但是,如果一个类存在于多个 JAR 中,则隔离会被破坏,并且可能会发生“重复类”错误。
避免类加载器冲突
避免类加载器冲突,建议:
将罐子合并为一个单元
那里Java 中没有固有的方式将多个 JAR 组合成一个“单元”以用于类加载目的。但是,可以采用一些技术,例如:
最终,策略的选择取决于项目的具体需求和可用资源。
以上是Java 类加载器如何处理同一库 Jar 的多个版本?的详细内容。更多信息请关注PHP中文网其他相关文章!