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+ jar
mando?
Esta excepción es causado por error del JDK-8223811 en Java 8, que se desencadena por la -f
bandera. 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 -f
bandera, 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