15

私はApache Commons Compress Examples Webページから取得した以下のコードを使用して、通常のJava zipよりも圧縮が高速であることを期待して、sevenZクラスを使用してzipファイルを作成しようとしています。これは私のコードがどのように見えるかです

public static void main(String[] args) {
    // TODO Auto-generated method stub
    try{
    BufferedInputStream instream = new BufferedInputStream(new FileInputStream("c:/temp/test.txt"));

    SevenZOutputFile sevenZOutput = new SevenZOutputFile(new File("c:/temp/7ztest.zip"));
    SevenZArchiveEntry entry = sevenZOutput.createArchiveEntry(new File("c:/temp/test.txt"),"blah.txt");
    sevenZOutput.putArchiveEntry(entry);
    byte[] buffer = new byte[1024];
    int len;
    while ((len = instream.read(buffer)) > 0) {sevenZOutput.write(buffer, 0, len);}

    sevenZOutput.closeArchiveEntry();
    sevenZOutput.close();
    instream.close();
    }catch(IOException ioe) {
        System.out.println(ioe.toString());

    }
}

無関係に見えるこのエラーが発生します

スレッド「メイン」での例外 java.lang.NoClassDefFoundError: org.tukaani.xz.FilterOptions at java.lang.J9VMInternals.verifyImpl(Native Method) at java.lang.J9VMInternals.verify(J9VMInternals.java:93)

私はApacheパッケージをインポートしました

import org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry; import org.apache.commons.compress.archivers.sevenz.SevenZOutputFile;

org.tukaani.xz.FilterOptions が何であるかはわかりませんが、apace commons 圧縮の一部ではないようです。何かご意見は?

4

1 に答える 1

29

Apache Commonsの「既知の制限」ペー​​ジに記載されているとおり:

「フォーマットには、それ以外の場合はオプションのXZ for Javaライブラリが必要です。」

この依存関係は、他の形式ではオプションですが、7zip では必要です。

<dependency>
  <groupId>org.tukaani</groupId>
  <artifactId>xz</artifactId>
  <version>1.5</version>
</dependency>
于 2015-02-02T12:14:04.697 に答える