title: Apache Commons Compress: Opening .tar.gz
body: <p>I'm developing a software that will get information from tar.gz files and I'm using the Apache commons-compress lib. But I'm getting the following error:</p>
  
  <pre><code>Caused by: java.lang.IllegalArgumentException: Invalid byte 4 at offset 0 in 'O�!�C' len=8
  at org.apache.commons.compress.archivers.tar.TarUtils.parseOctal(TarUtils.java:134)
  at org.apache.commons.compress.archivers.tar.TarUtils.parseOctalOrBinary(TarUtils.java:166)
  at org.apache.commons.compress.archivers.tar.TarArchiveEntry.parseTarHeader(TarArchiveEntry.java:953)
  at org.apache.commons.compress.archivers.tar.TarArchiveEntry.parseTarHeader(TarArchiveEntry.java:940)
  at org.apache.commons.compress.archivers.tar.TarArchiveEntry.&lt;init&gt;(TarArchiveEntry.java:324)
  at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.getNextTarEntry(TarArchiveInputStream.java:274)
  ... 2 more
  </code></pre>
  
  <p>The sample tar.gz file used is eclipse-jee-luna-SR1-linux-gtk-x86_64.tar.gz</p>
  
  <p>Here is the class that uses the lib:</p>
  
  <pre><code>public class TarGzBuildAdapter extends BuildAdapter {
      public TarGzBuildAdapter(File build) {
          super(build);
      }
  
      @Override
      public List&lt;ArtifactInfo&gt; getArtifactInfos() throws IOException {
          TarArchiveInputStream tarArchiveInputStream = new TarArchiveInputStream(
                  new FileInputStream(this.build));
          TarArchiveEntry tarArchiveEntry;
          List&lt;ArtifactInfo&gt; artifactInfos = new LinkedList&lt;ArtifactInfo&gt;();
  
          while ((tarArchiveEntry = tarArchiveInputStream.getNextTarEntry()) != null) {
              System.out.println(String.format("Name: %s LinkName: %s Size: %Ld RealSize: %Ld",
                      tarArchiveEntry.getName(), tarArchiveEntry.getLinkName(),
                      tarArchiveEntry.getSize(), tarArchiveEntry.getRealSize()));
              artifactInfos.add(new ArtifactInfo(tarArchiveEntry.getName(), tarArchiveEntry
                      .getRealSize()));
          }
  
          tarArchiveInputStream.close();
  
          return artifactInfos;
      }
  }
  </code></pre>