質問: Apache Commons Zip 64 機能、特に ZipArchiveOutputStream.setUseZip64() メソッドを機能させるのに苦労しています。このメソッドを使用しようとすると、「メソッド setUseZip64(Zip64Mode) はタイプ ZipArchiveOutputStream に対して未定義です」というエラーが表示されます。このエラーが発生するのはなぜですか?
私が試し たこと 私はこれにかなりの時間を費やしました。外部 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)