Java - 在构建 class 路径和运行时 class 路径优先级中相同 class

Java - Same class in build classpath and runtime classpath priority

我不是Java专家,我对class的解决方案有疑问,以防发生冲突。考虑我有两个 jar 文件 external-library-0.0.1external-library-0.0.2 的场景,它们都有 class Foo.

如果我在构建 class 路径中仅使用 external-library-0.0.1.jar 进行构建,然后在运行时 class 路径中添加 external-library-0.0.2.jar,即 class Foo会用吗?

将使用运行时类路径中的那个。
另一个 JVM 在运行时根本不知道。

如果有任何差异(例如,方法不存在),您将在运行时收到错误消息。

从程序员的角度来看,假设随机。永远不要在 class 路径上放置多个相同 class 的定义,无论是在编译时还是在运行时。

可以指出,有时有些工具会尝试提供有关加载顺序的保证,但依赖它会使您的应用程序本质上很脆弱,并且这种错误在您需要时确实很难修复。