nullpointerexceptionapache-commons-compress

Why NoPointerExcepeion when decompression by apache compress?


click and see The NoPointerExcepeion

I generate tar.gz files and send 2 others 4 decompress, but their progrem has error above(their progrem was not created by me), only one file has that error.

But when using command 'tar -xzvf ***' on my computer and their computer, no problem occured...

So I want 2 know what was wrong in my progrem below:

public static void archive(ArrayList<File> files, File destFile) throws Exception {
    TarArchiveOutputStream taos = new TarArchiveOutputStream(new FileOutputStream(destFile));
    taos.setLongFileMode(TarArchiveOutputStream.LONGFILE_POSIX);
    for (File file : files) {
        //LOG.info("file Name: "+file.getName());
        archiveFile(file, taos, "");
    }
}

private static void archiveFile(File file, TarArchiveOutputStream taos, String dir) throws Exception {
    TarArchiveEntry entry = new TarArchiveEntry(dir + file.getName());
    entry.setSize(file.length());
    taos.putArchiveEntry(entry);
    BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
    int count;
    byte data[] = new byte[BUFFER];
    while ((count = bis.read(data, 0, BUFFER)) != -1) {
        taos.write(data, 0, count);
    }
    bis.close();
    taos.closeArchiveEntry();
}

Solution

  • The stack trace looks like a bug in Apache Commons Compress https://issues.apache.org/jira/browse/COMPRESS-223 that has been fixed with version 1.7 (released almost three years ago).