Локально отрабатывает нормально. В чем могут быть грабли? Если вместо
Files.copy(fileName, zip);
ставлю
zip.write(Files.readAllBytes(fileName));
то валидатор ругается, что нужно использовать Files.copy()