Из-за условия в while
цикл может никогда не прерываться:
while (entry != null) {
// If entry never becomes null here, loop will never break.
}
Вместо проверки null
вы можете попробовать следующее:
ZipEntry entry = null;
while ((entry = zip.getNextEntry()) != null) {
// Rest of your code
}