gpt4 book ai didi

java - 什么是类路径 hell ,它是否真的是 Java 的问题?

转载 作者:IT老高 更新时间:2023-10-28 20:39:43 24 4
gpt4 key购买 nike

什么是类路径 hell ,它对 Java 来说真的是一个问题吗?

最佳答案

类路径 hell 是 Java 执行的那种动态链接的不幸结果。

您的程序不是一个固定的实体,而是由 JVM 在特定实例中加载的确切类集。

很可能会出现在不同平台甚至同一个平台上的相同命令行由于解析规则而导致完全不同的结果的情况。

标准库中可能存在差异(非常常见)。库可以相互隐藏(甚至可以使用旧版本而不是新版本)。目录结构可能会弄乱解析。同一个类的不同版本可能会出现在多个库中,并且将使用第一个遇到的版本,等等。由于 Java 按照规范使用第一次遇到的策略,未知的排序依赖关系可能会导致问题。当然,由于这是命令行并且是规范的一部分,因此没有真正的警告。

这仍然是一个问题。例如,在 Mac OS 上,来自 Apple 的可怕支持意味着您的机器最终会使用多个 JVM 和多个 JRE,并且您永远无法轻松地将东西从一个地方转移到另一个地方。如果您有多个针对特定但不同版本的其他库编译的库,您可能会遇到问题,等等。

然而,这个问题并不是 Java 所固有的。我记得我在 90 年代编写 Windows 时遇到的 DLL hell 情况。在任何情况下,您都必须依靠文件系统中的某些东西来组装您的程序,而不是拥有一个定义良好的可执行文件。

不过,这种模式的好处还是很大的,所以我愿意忍受这个 hell 。孙这边也有朝着正确方向的台阶。例如,Java6 允许您简单地使用 jar 指定一个目录,而不必枚举它们。

顺便说一句:如果您使用的是使用非默认类加载器的环境,类路径也是一个问题。例如,由于类加载器不兼容,我在 Eclipse 下运行 Hibernate 或 Digester 时遇到了很多问题。

关于java - 什么是类路径 hell ,它是否真的是 Java 的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/373193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com