在java jar中重复类的含义是什么?

rom*_*meo 11 java ant jar class duplicates

我正在使用ant构建java jar文件.我需要使用"zipfileset src ="xxx.jar""zipfileset src ="yyy.jar"包含其他jar,并且xxx.jar和yyy.jar都包含具有SAME完全限定类名的类.因此生成的jar文件具有重复的类名.重复有什么可能的影响?

谢谢.

Dav*_*ton 16

如果它们是重复实现,那么什么都没有 - 加载哪个都没关系.

如果没有,您将受到类加载顺序的支配,并且可能会获得与您想要的版本不同的版本.

指定的类路径条目将在列出的(按照顺序进行搜索此类路径DOC).但是,如果您完全控制类路径创建(例如,与Web应用程序不同),那么这只是相关的.

(告诫类路径通配符使顺序不确定.)


Mar*_*nik 5

一般来说,这种情况非常不推荐,应该避免.

java中的jar只是类文件的容器.java使用类加载器来查看类路径并从那里加载类文件.所以如果你有两个内部具有相同类xyFoo的罐子A.jar和B.jar,那么将加载来自类路径中第一个jar的类.因此,如果您的类路径是A.jar,B.jar(按此顺序),来自A.jar的类Foo将在运行时使用.这种不一致可能导致我的经验中非常难以修复的错误