title: java.util.zip.ZipException: oversubscribed dynamic bit lengths tree
body: <p>I am compressing a string using gzip, then uncompress the result, however I got the following exception, why?</p>
  
  <pre> output:
  Exception in thread "main" java.util.zip.ZipException: oversubscribed dynamic bit lengths tree
   at java.util.zip.InflaterInputStream.read(Unknown Source)
   at java.util.zip.GZIPInputStream.read(Unknown Source)
   at Test.main(Test.java:25)
  </pre>
  
  <pre><code>public class Test {
   public static void main(String[]args) throws IOException{
    String s="helloworldthisisatestandtestonlydsafsdafdsfdsafadsfdsfsdfdsfdsfdsfdsfsadfdsfdasfassdfdfdsfdsdssdfdsfdsfd";
    byte[]bs=s.getBytes();
    ByteArrayOutputStream outstream = new ByteArrayOutputStream();
  
    GZIPOutputStream gzipOut = new GZIPOutputStream(outstream);
    gzipOut.write(bs);
    gzipOut.finish();
    String out=outstream.toString();
    System.out.println(out);
    System.out.println(out.length());
  
    ByteArrayInputStream in = new ByteArrayInputStream(out.getBytes());
    GZIPInputStream gzipIn=new GZIPInputStream(in);
    byte[]uncompressed = new byte[100000];
    int len=10, offset=0, totalLen=0;
    while((len = gzipIn.read(uncompressed, offset, len)) &gt;0){ // this line
     offset+=len;
     totalLen+=len;
    }
  
    String uncompressedString=new String(uncompressed,0,totalLen);
    System.out.println(uncompressedString);
   }
  }
  </code></pre>