问题: 我一直在努力使Apache Commons Zip 64功能正常工作,特别是ZipArchiveOutputStream.setUseZip64()方法。当我尝试使用此方法时,我得到一个“方法setUseZip64(Zip64Mode)未定义ZipArchiveOutputStream类型”错误。为什么会发生这种错误?
我尝试过什么 我花了很多时间在这上面。我将外部JAR文件添加(并验证)到项目中。从我在Eclipse中看到的,当我尝试实例化ZipArchiveOutputStream时,奇怪的是,对象的签名变为:
org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream.ZipArchiveOutputStream
请注意重复的签名为
ZipArchiveOutputStream.ZipArchiveOutputStream
或者,我手动将源代码添加到实际的项目构建中。当我手动将源代码添加到项目ODDLY时,该方法有效 - 也就是说,我可以调用
zipout.setUseZip64(Zip64Mode.Always)
没有问题(并且签名似乎不像上面那样重复)。
理想情况下,我只想引用外部Apache JAR文件而不是内部添加源代码。那么,为什么会发生这种错误?
注意:我还将自己编译的Apache Source版本作为单独的JAR构建,这也表现出所描述的错误。因此,只有手动将代码添加到实际的Eclipse Project中似乎有所帮助。
注意:我确保手动添加的版本与外部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)
答案 0 :(得分:0)
经过几个月的解决这个问题后,解决方案偶然出现了。
如果一个人进口Apache Commons Zip和Mahout Distribution 0.5,就会出现问题。
具体来说,
存在细微的导入冲突mahout-examples-0.5.jar
mahout-examples-0.5-job.jar
显然也使用旧版本的Apache Commons。导入命令导致了一个微妙的冲突,导致更新的Apache Commons功能无效 - 除非我手动将Commons Compress代码(仅用于测试)导入到项目中 - 有效地颠覆了与Mahout的真实冲突。