2015-01-30 1 views
3

아파치 커먼즈에서 얻은 아래 코드를 사용하여 예제 웹 페이지를 압축하여 sevenZ 클래스를 사용하여 zip 파일을 작성하면 일반 java 압축보다 압축하기 쉽습니다. 이 내 코드는 내가아파치 커먼즈는 7zip을 사용하여 압축합니다.

Exception in thread "main" java.lang.NoClassDefFoundError: org.tukaani.xz.FilterOptions at java.lang.J9VMInternals.verifyImpl(Native Method) at java.lang.J9VMInternals.verify(J9VMInternals.java:93)

내가 확인

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

하지만 수입 아파치 패키지가 너무 관련이없는 모습이 오류가

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()); 

    } 
} 

처럼 무엇 org.tukaani 보이는 것입니다 .xz.FilterOptions는 apace 컴 파트먼트 압축의 일부인 것처럼 보이지 않습니다. 이견있는 사람? .

+0

그것은 당신이 드 압축 파일을 때 당신이 7Z 파일로 압축하지만 확장 된 .zip –

답변

11

으로는 "아파치 코 몬즈에서 Known Limitations" 페이지 :

가"에 언급 된 형식이 다른 옵션 XZ for Java 라이브러리가 필요합니다 "

이 종속성은 다른 형식에 대한 선택 사항입니다,하지만 당신은 7zip과 위해 필요합니다.

<dependency> 
    <groupId>org.tukaani</groupId> 
    <artifactId>xz</artifactId> 
    <version>1.5</version> 
</dependency> 
+1

PSA 때문에이 오류가 발생 것이라는 점을 주목할 필요가있다 : 아파치의 현재 버전 Commons Compression (1.14)은 버전 1.6에'xz'가 필요합니다. – Henrik

관련 문제