2015-10-20 91 views
1

我有一个jar文件 - 它恰好是使用JAXB从XML模式生成的。同一个jar文件中的两个相同的类

我刚刚注意到,在那个jar里面的同一个路径中,我有两个完全相同名称的类。事实上,如果我使用7-zip解压缩jar,Windows问我是否想用“blah.class”替换文件“blah.class”。

这怎么可能?从Java的角度和从文件系统的角度来看? zip格式是否允许这样做?我试图谷歌周围,但无济于事。

谢谢, David。

回答

1

是的,zip确实允许2个文件具有相同的完全限定名称。

蚂蚁罐子参考页状态:

请注意,zip格式允许相同的完全限定名称的多个文件到一个存档中存在。这已被记录为对毫无戒心的用户造成各种问题。如果您希望避免此行为,则必须将重复属性设置为非默认值“添加”的值。

然后Java会从类路径中选择第一个。

1

当在同一个版本中包含相同接口的多个实现时,我遇到了类似的问题。如果您发现有必要执行此操作并使用Maven,则可以使用排除标签从生成的jar文件中删除其中一个实现。

相关问题