Java在构建类路径和运行时类路径优先级中具有相同的类
我不是Java专家,我对冲突情况下的类解析有疑问。考虑一个场景,我有两个jar文件{{CD1}},^ {CD2}},它们都有一个类^ {CD3}}。p>
如果我在构建类路径中仅使用external-library-0.0.1.jar
进行构建,然后在运行时类路径中添加external-library-0.0.2.jar
,那么将使用哪个类Foo
你可以在下面搜索框中键入要查询的问题!
我不是Java专家,我对冲突情况下的类解析有疑问。考虑一个场景,我有两个jar文件{{CD1}},^ {CD2}},它们都有一个类^ {CD3}}。p>
如果我在构建类路径中仅使用external-library-0.0.1.jar
进行构建,然后在运行时类路径中添加external-library-0.0.2.jar
,那么将使用哪个类Foo
# 1 楼答案
从程序员的角度来看,假设随机。无论是在编译时还是在运行时,都不要在类路径上放置同一类的多个定义
有人可能会指出,有时有些工具试图提供关于加载顺序的保证,但依赖它会使您的应用程序天生脆弱,而这种错误在需要时很难修复
# 2 楼答案
将使用运行时类路径上的一个
另一个是JVM在运行时根本不知道的
如果存在任何差异(例如,方法不存在),您将在运行时得到一个错误