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

时间:2015-08-28 15:00:58

标签: java build runtime classpath

我不是Java专家,如果发生冲突,我对课堂解决方案有疑问。考虑我有两个jar文件external-library-0.0.1external-library-0.0.2都有一个类Foo的情况。

如果我在构建类路径中仅使用external-library-0.0.1.jar构建,然后在运行时类路径中添加external-library-0.0.2.jar,将使用哪个类Foo

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

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

有人可以指出,有时会有一些工具尝试提供有关加载顺序的保证,但依赖它会使您的应用程序本身就很脆弱,而且当您需要时,这种错误很难修复。