1 votos

Usando `jar` para crear un archivo "zip" Mac no abre el zip, dice "Es un formato no soportado" ¿por qué?

Tengo un sistema de construcción con un archivo por lotes impulsado por la línea de comandos que utiliza jar (de Java JDK) en una máquina Windows para hacer un archivo zip como este ...

jar cf c:\target\Application-1.5.zip -C Application-1.5/ .

Se "cierra" todo en el Application-1.5 directorio en el archivo zip Application-1.5.zip .

Utilicé jar porque no hay zip en la línea de comandos en Windows.

Cuando descargo el archivo zip en una máquina con Windows 10, Windows extrae el zip sin problemas.

Sin embargo, cuando descargo el archivo zip en mi MacBook (Catalina), y hago doble clic en el archivo zip, el Mac no quiere descomprimir el archivo ... dice ... "No se puede expandir "Aplicación-1.5.zip". Es un formato no soportado.

Además... cuando uso el comando jar en el Mac para descomprimirlo así jar -xf ./Application-1.5.zip funciona, por lo que el archivo es "válido", pero al descompresor integrado de Mac no le gusta.

¿Qué hago para crear un archivo zip que le guste a Mac?

2voto

0942v8653 Puntos 3617

Gracias por publicar esta interesante pregunta.

Mirando bajo el capó de Archive Utility, resulta que hace dos cosas para comprobar el tipo de archivo:

  1. Compruebe la extensión del archivo: .zip en su caso.
  2. Compruebe la magia del archivo utilizando /usr/bin/file .

Para detectar el archivo como un archivo zip válido, el resultado de la magia del archivo debe decir "Datos del archivo zip". Supongo que los desarrolladores de la Utilidad de Archivos no querían confiar en la extensión del archivo para determinar si algo es un zip, por lo que se basan en el file de salida.

Puede conocer el file que se produjo al establecer lo siguiente defaults clave:

$ defaults write com.apple.archiveutility log-commands -bool TRUE

y abriendo el archivo en Archive Utility. Entonces la salida se mostrará en el registro del sistema (Console.app).

Archive Utility  magic: "Desktop/test/empty_jar.zip" -> "Java archive data (JAR)

(También puede ejecutar file asdf.zip para descubrir la magia).

Puede ver que file detectó el zip como un archivo JAR, no como un archivo Zip. Esto es una especie de "característica" del formato JAR, que es un Zip pero puede tener un 0xcafe etiqueta . Esta etiqueta parece ser un poco de un agujero de conejo, pero basta con decir que el jar la utilidad lo añade a los archivos que genera.

Nota: Estoy ejecutando High Sierra. Es posible que haya que considerar otras versiones.

Otra forma de generar archivos Zip en Windows es utilizar la función de Powershell Comprimir-Archivo . Otros lectores tal vez quieran comprobarlo, ya que no requiere la instalación de ningún software.

0voto

AvaTaylor Puntos 1

Trabajé alrededor de mi problema mediante la instalación de 7-zip en Windows 10 y usar eso en lugar de jar así...

7z a c:\target\Application-1.5.zip .\Application-1.5\* -r 

A Mac le gusta el archivo zip producido por 7-zip, así que esto me servirá.

Pero todavía me gustaría saber cómo hacer un archivo zip con jar que el unarchive por defecto de Mac puede descomprimir.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X