Reputation: 339
I am trying to use the below code that I got from apache commons compress examples webpage to create a zip file using the sevenZ classes hoping it would be faster to compress than regular java zip. this is what my code looks like
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());
}
}
I get this error which looks so unrelated
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)
I have the apache packages imported
import org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry; import org.apache.commons.compress.archivers.sevenz.SevenZOutputFile;
but not sure what the org.tukaani.xz.FilterOptions is, it doesnt look like it is part of the apace commons compress. Any thoughts?
Upvotes: 18
Views: 13333
Reputation: 1667
EDIT 2024-03-30: There seems to be a very serious compromise in the XZ library by the maintainer. Do NOT use the dependency without first verifying that the vulnerabilities have been adressed:
As noted on the "Known Limitations" page at Apache Commons:
"the format requires the otherwise optional XZ for Java library."
This dependency is optional for the other formats, but you need it for 7zip.
<dependency>
<groupId>org.tukaani</groupId>
<artifactId>xz</artifactId>
<version>1.5</version>
</dependency>
Upvotes: 32