I know this thread is old but I may as well post this for people that encounter this problem and also find no help.
To solve this problem I just created a new ZipEntry instead of reusing the one that came from the ZipFile being read. The ZipEntry read from the original zip file has all its properties set and I'm guessing the zip algorithm used doesn't always zip files to the exact same size. That's why it complains about the size of the ZipEntry. If you just create a new ZipEntry with the same name and add that instead it works perfectly. eg.
...
ZipEntry readZipEntry = entries.nextElement();
ZipEntry newZipEntry = new ZipEntry(readZipEntry.getName());
zos.putNextEntry(newZipEntry);
...
Hope this helps someone.