我有一个jar文件 - 它恰好是使用JAXB从XML模式生成的。
我刚才注意到在jar中的同一个路径中,我有2个具有完全相同名称的类。事实上,如果我使用7-zip解压缩jar,Windows会询问我是否要将文件“blah.class”替换为“blah.class”。
这怎么可能?从Java角度和文件系统角度来看? zip格式是否允许这样做?我试图谷歌,但没有用。
谢谢, 大卫。
答案 0 :(得分:1)
是的,zip确实允许2个文件具有相同的完全限定名称。
ant jar参考页面声明:
然后,Java将从类路径中选择第一个。请注意,zip格式允许在同一个存档中存在多个具有相同完全限定名称的文件。这已被记录为导致毫无戒心的用户的各种问题。如果您希望避免此行为,则必须将duplicate属性设置为默认值“add”。
答案 1 :(得分:1)
在同一构建中包含相同接口的多个实现时遇到类似问题。如果您发现有必要这样做并使用Maven,则可以使用exclude标签从生成的jar文件中删除其中一个实现。