如果将两个具有不同名称的类似jar添加到类路径中会发生什么?

时间:2014-10-24 09:28:20

标签: java

如果将两个具有相同内容的jar(比如jarA,jarA_old)添加到工作jar的类路径中(即在主jar的manifest文件中,其jar文件夹中同时包含jarA和jarA_old)。 然后,当调用或导入其中的类时,将考虑哪个Jar?

JarA在其清单中有这个:

Build-Date: Fri, 18 May 2012 12:28:40
Build-Environment: x86 Windows XP 5.1
Build-Number: 5

JarA_old在其清单中显示:

Build-Date: Wed, 23 Nov 2011 06:34:39
Build-Environment: x86 Windows XP 5.1
Build-Number: 4

除此之外所有其他细节都类似..

3 个答案:

答案 0 :(得分:1)

ClassLoader将尝试按顺序查找类路径的所有jar中的类。一旦它在罐子里找到它,它就会从这个罐子里装出来。

答案 1 :(得分:1)

Oracle says

  

规格订单

     

指定多个类路径条目的顺序非常重要。   Java解释器将在中查找类   目录按它们出现在类路径变量中的顺序。在   在上面的例子中,Java解释器将首先寻找所需的   目录C:\ java \ MyClasses中的类。只有它没有找到   解释器看起来在该目录中具有正确名称的类   在C:\ java \ OtherClasses目录中。

答案 2 :(得分:0)

参见Java: Which of multiple resources on classpath JVM takes?,它会按照列出的顺序搜索广告。使用了第一个找到的匹配。