Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让ApacheCommonsZip--Zip64工作_Java_Zip_Apache Commons - Fatal编程技术网

Java 如何让ApacheCommonsZip--Zip64工作

Java 如何让ApacheCommonsZip--Zip64工作,java,zip,apache-commons,Java,Zip,Apache Commons,问题: 我一直在努力让Apache Commons Zip 64功能正常工作,特别是ZipArchiveOutputStream.setUseZip64()方法。当我尝试使用这个方法时,我得到一个“方法setUseZip64(Zip64Mode)对于类型ZipArchiveOutputStream是未定义的”错误。为什么会发生此错误 我尝试的 我在这方面花了不少时间。我将外部JAR文件添加(并验证)到项目中。从Eclipse中看到,当我尝试实例化ZipArchiveOutputStream时,奇

问题: 我一直在努力让Apache Commons Zip 64功能正常工作,特别是ZipArchiveOutputStream.setUseZip64()方法。当我尝试使用这个方法时,我得到一个“方法setUseZip64(Zip64Mode)对于类型ZipArchiveOutputStream是未定义的”错误。为什么会发生此错误

我尝试的 我在这方面花了不少时间。我将外部JAR文件添加(并验证)到项目中。从Eclipse中看到,当我尝试实例化ZipArchiveOutputStream时,奇怪的是,对象的签名变成:

org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream.ZipArchiveOutputStream

请注意重复的签名为

ZipArchiveOutputStream.ZipArchiveOutputStream

或者,我手动将源代码添加到实际的项目构建中。奇怪的是,当我将源代码手动添加到项目中时,该方法可以工作——也就是说,我可以调用

zipout.setUseZip64(Zip64模式始终)

无问题(签名似乎与上述内容不重复)

理想情况下,我只想引用外部apachejar文件,而不是在内部添加源代码。因此,为什么会发生这种错误

注意:我还构建了自己的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版)

在解决了这个问题几个月后,意外地找到了解决方案

如果同时导入ApacheCommonsZip和Mahout发行版0.5,就会出现问题

具体来说,在这一过程中存在着微妙的导入冲突

mahout-examples-0.5.jar 
mahout-examples-0.5-job.jar 
它显然也使用了Apache Commons的旧版本。导入顺序导致了一个微妙的冲突,使得最近的Apache Commons功能无效——除非我手动将Commons压缩代码(仅用于测试)导入到项目中——实际上破坏了与Mahout的真正冲突