【问题标题】:How does JVM deal with duplicate JARs of different versionsJVM如何处理不同版本的重复JAR
【发布时间】:2009-11-03 18:36:23
【问题描述】:

当存在不同版本的重复 JAR 时,行为非常不一致。有谁知道 JVM 是如何处理重复的?

【问题讨论】:

    标签: java


    【解决方案1】:

    类加载器按顺序搜索类路径,并使用它找到的第一个匹配的类。

    【讨论】:

    • 一般来说这是正确的。但是,这取决于类加载器的实现。例如,在 Web 框架中加载类时,可能会在官方类路径之前检查部署的 jar/war/ear/sar 文件。
    【解决方案2】:

    FWIW,这是一个更大主题(模块化)的示例,由 JDK 7 Java 9 中的 OSGiProject Jigsaw/JSR 294 解决。

    您的问题是该主题的良好动机:古老而简单的类路径在开始时可能是一个好主意,但在当今高度依赖 3rd-party-libraries 的时代,它无疑是一个痛点。

    【讨论】:

    • Jigsaw 实际上不在 JDK 7 中,但计划用于尚未发布的 JDK 9。FWIW 我提交了对这个事实错误的编辑,但它被拒绝了(不是被作者拒绝),因为它“没有任何意义编辑”和“篡改帖子的原意”
    猜你喜欢
    • 2013-04-11
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 2020-05-19
    相关资源
    最近更新 更多