"Cabecera CEN no válido (mal firma)" al extraer un archivo de 4 GB + desde un archivo zip utilizando Java comando 8 tarro

vallismortis :

Tengo un archivo zip que contiene 5 archivos. Cuatro de los archivos son pequeñas (unos pocos KB), pero un archivo es mayor que 4 GB. Soy consciente de JDK-4681995 , que añade soporte de archivos grandes (ZIP apoyo de 64 bits) a partir de Java en Java 7. Estoy usando 64 bits de Java 8 en Windows 8.1:

C:\Users\user\Desktop>java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)

El tamaño del archivo zip es el siguiente:

07/07/2019  10:18 AM       503,966,751 snapshot-20190707.zip

El contenido del archivo zip son:

07/07/2019  09:53 AM                67 database.sha1
07/07/2019  09:51 AM     4,508,840,068 database.sql
07/07/2019  09:53 AM                74 database_schema.sha1
07/07/2019  09:51 AM            36,386 database_schema.sql
07/07/2019  09:51 AM            45,280 backup.log

Si trato de extraer el archivo de 4 GB, me encuentro con una excepción que se ve exactamente como la excepción de Java 7 para archivos zip de 64 bits :

C:\Users\user\Desktop>jar xvf snapshot-20190707.zip database.sql
java.util.zip.ZipException: invalid CEN header (bad signature)
        at java.util.zip.ZipFile.open(Native Method)
        at java.util.zip.ZipFile.<init>(ZipFile.java:225)
        at java.util.zip.ZipFile.<init>(ZipFile.java:155)
        at java.util.zip.ZipFile.<init>(ZipFile.java:126)
        at sun.tools.jar.Main.extract(Main.java:1004)
        at sun.tools.jar.Main.run(Main.java:305)
        at sun.tools.jar.Main.main(Main.java:1288)

¿Hay alguna manera de extraer un archivo de 4 GB + desde un archivo zip de 64 bits utilizando el Java 8+ jarmando?

vallismortis :

Esta excepción es causado por error del JDK-8223811 en Java 8, que se desencadena por la -fbandera. El presentador de re-creado el problema con:

jar xvf archive.zip *

A partir de un comentario sobre el informe de error (19 de mayo 2019):

Esto sólo es reproducible en JDK 8 versiones. Se fija en el JDK 9 y superior y no es un problema en el último JDK 11, 12 o 13.

La solución para Java 8 es de no especificar un archivo individual cuando se usa la -fbandera, y basta con extraer todos los ficheros del archivo:

Esta versión del comando extrae con éxito todos los archivos sin ningún problema:

C:\Users\user\Desktop>jar xvf snapshot-20190707.zip
 inflated: backup.log
 inflated: database_schema.sha1
 inflated: database_schema.sql
extracted: database.sha1
 inflated: database.sql

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=317549&siteId=1
Recomendado
Clasificación