Ah, ok. In der Fehlermeldung stand nach dem ersten Post.
Also ich habe jetzt nochmal die Spezifikation gewälzt (
https://www.pkware.com/documents/casestudies/APPNOTE.TXT ). Was bei meinen Zip-Dateien fehlt, ist der "data descriptor". Dieser ist laut Spezifikation optional. Es gibt ein Flag, mit dem man seine Anwesenheit anzeigen kann - das ist bei mir nicht gesetzt.
Eine Recherche zeigte, dass die gleiche Frage bei der Entwicklung von JDK7 auftrat, und die Entwickler haben bei PKware nachgefragt:
https://blogs.oracle.com/xuemingshen/entry/is_zipinput_outputstream_handling_of
Recht weit unten auf der Seite sieht man, dass die Antwort ist, dass "data descriptor" nicht gleichzeitig mit dem "zip64 extended information field" verwenden soll. Korrigier mich bitte, wenn ich das falsch verstanden habe - mir geht es nicht darum, den schwarzen Peter umherzuschieben, sondern eine standardkonforme Implementierung zu haben, die (im Rahmen der Spezifikation) mit möglichst vielen Programmen kompatibel ist.
Der korrekte CRC-Wert für jede Datei steht übrigens (auch, in meinem Fall nur) im "central directory header".