问: 我一直在努力让 Apache Commons Zip 64 功能正常工作,特别是 ZipArchiveOutputStream.setUseZip64() 方法。当我尝试使用此方法时,我收到“对于 ZipArchiveOutputStream 类型的方法 setUseZip64(Zip64Mode) 未定义”错误。为什么会发生此错误?
我尝试了什么我 花了很长时间在这上面。我将外部 JAR 文件添加(并验证)到项目中。从我在 Eclipse 中看到的内容来看,当我尝试实例化 ZipArchiveOutputStream 时,奇怪的是,对象的签名变为:
org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream.ZipArchiveOutputStream
请注意重复签名为
ZipArchiveOutputStream.ZipArchiveOutputStream 。
或者,我手动将源代码添加到实际的项目构建中。当我手动将源代码添加到项目中时,奇怪的是,该方法有效——也就是说,我可以调用
zipout.setUseZip64(Zip64Mode.Always)
没有问题(并且签名似乎不像上面那样重复)。
理想情况下,我只想引用外部 Apache JAR 文件,而不是在内部添加源代码。因此,为什么会发生此错误?
注意:我还将我自己的 Apache 源代码编译版本构建为单独的 JAR,这也显示了所描述的错误。因此,只有手动将代码添加到实际的 Eclipse 项目中似乎有帮助。
注意:我确保手动添加的版本和外部 JAR 引用之间没有冲突。
代码示例
import org.apache.commons.compress.*;
import org.apache.commons.compress.archivers.zip.*;
...
ZipArchiveOutputStream zipout =
new ZipArchiveOutputStream(new FileOutputStream(filenameandpath));
zipout.setUseZip64(Zip64Mode.Always) ; // ERROR HERE The method setUseZip64(Zip64Mode)
// is undefined for the type
// ZipArchiveOutputStream
配置 Eclipse 3.7(和 4.2)Java 1.6 Apache Commons Compress(版本 1.3 和更新的 1.4)