Are you sure the input zipfile is valid? Perhaps it was created by a broken zip implementation (e.g. JDK 1.4). Try unzipping the file with other tools you have (WinZip, jar, whatever), to see if the file is a valid zip.
Also, though it shouldn't affect the problem you're currently experiencing, it looks like are writing each entry to the same target file - each time, overwriting the old file. Are you sure that's what you want to do?
Hm, apparently this is an ongoing issue in the JDK. The previous bugfix just covered sizes from 2GB-4GB, and that's fixed, but we still can't zip/unzip files larger than 4GB. See bug 4681995. Doesn't sound like that will be fixed right away - JDK 6 seem to still contain this problem. There may be a 3rd-partly library somewhere that can do this, but I didn't find one in my quick googling. (I tried "java zip64 library".) Perhaps your best option from Java right now is to use Runtime.exec() to execute some other non-Java program, like pkzip or gzip, or even Java's jar command. (Assuming that can handle such huge files; I don't know.) That's a somewhat ugly solution, but at the moment it looks like maybe zip64 support is just not available yet as a pure-Java solution. Or, you could read the specs carefully and write your own decompressor, I suppose, but that's probably a lot harder than using exec() would be. Good luck...
Am also facing this problem now. I tried winzip from command prompt, but as it is not free it will bring a popup to accept the licence agrements, so manual intervention is required. Thats why only option left was using windows zip utility to extract. Does anyone know how to call windows zip utility from command prompt? So that this can be called from java for extracting big files.