Fehler im JDK-Zip-Dateisystem von Oracle, wie schreibt man einen SSCCE, um ihn zu reproduzieren?

8

Dieser Fehler ist in den neuesten 1.7 und 1.8 Versionen des JDK (7u72, 8u25) vorhanden. Erforderlich: jackson-databind 2.5.0. Getestet auf Linux x86_64 (Ubuntu 14.10 um genau zu sein).

Code:

%Vor%

Dies erzeugt eine ungültige ZIP-Datei:

%Vor%

Ich habe ursprünglich den Bug auf Jacksons Problem-Tracker geöffnet, obwohl es wirklich nicht der Schuldige ist hier, und eine Lösung wurde gefunden, um es zu umgehen: JsonGenerator.Feature.AUTO_CLOSE_SOURCE in der ObjectMapper deaktivieren. Diese Option, die standardmäßig aktiviert ist, weist den Mapper an, den Stream zu schließen.

Während ich den Bug gerne zu Oracle öffnen möchte, möchte ich zuerst einen SSCCE schreiben können, aber ich kann nicht. Ich habe versucht, den Stream zweimal zu schließen (da es im Beispiel zweimal geschlossen wurde), um keine try-with-resources-Anweisung zu verwenden usw. Ohne Erfolg.

Können Sie sich ein SSCCE für dieses Problem einfallen lassen?

    
fge 14.01.2015, 23:50
quelle

1 Antwort

3

Ich hatte gedacht, Jackson würde etwas Unerwartetes tun, aber es stellt sich heraus, dass man das Problem ohne irgendeinen Jackson-Code reproduzieren kann. Ich habe den Körper des Blocks try durch zwei Zeilen ersetzt, die (ich bin mir ziemlich sicher) dasselbe tun, und das Ergebnis ist immer noch eine ungültige ZIP-Datei:

%Vor%     
VGR 16.01.2015, 17:54
quelle

Tags und Links