2011-01-18 17 views
6

Me he encontrado con un problema interesante que es absolutamente nuevo para mí. Como descubrí de repente, la especificación Jar dice que, al incluirse, META-INF y MANIFEST.MF deben ser la primera y la segunda entrada del paquete *.jar y no solo el directorio y el archivo dentro del archivo.¿Cómo verifico el orden de MANIFEST.MF dentro de jar?

Estoy trabajando con Java framework estando muy pendiente de este requisito y no tanto. ¿Cómo puedo verificar que META-INF y MANIFEST.MF estén ordenados adecuadamente dentro del contenedor?

ACTUALIZACIÓN: Muchos de los frascos son de terceros, y hay muchos de ellos. No puedo abrir estos archivos en el bloc de notas, excel, hexeditor, photoshop o lo que sea que busque secuencias de bytes. Necesito la herramienta de línea de comandos. ¡Gracias!

ACTUALIZACIÓN 2: Aquí es la razón por la que estoy haciendo esta pregunta: http://www.mail-archive.com/[email protected]/msg17097.html

+1

En realidad, la especificación no dice que tienen que ser el primero. Sin embargo, la herramienta de línea de comandos 'jar' los coloca primero y algunas herramientas esperan que lo sean, por ejemplo, porque una herramienta puede escanear rápidamente los manifiestos de un directorio completo de archivos JAR. Entonces, realmente es más una convención que un requisito. –

+0

@Neil Bartlett, gracias por aclararme, pero empeora las cosas para mí :(Aquí está la fuente del problema: http://www.mail-archive.com/[email protected]/msg17097.html Any ideas? – Osw

+0

Aha, así que esta es una instancia de una herramienta suponiendo que el MANIFIESTO es lo primero! Para responder a su pregunta original, 'jar tf foo.jar' debe listar los contenidos del JAR en orden. –

Respuesta

5

El siguiente comando listar el contenido de un archivo JAR en orden:

jar tf foo.jar 

Tenga en cuenta que no hay una necesidad real en la especificación JAR para META-INF/MANIFEST.MF a aparecer en primer lugar. Sin embargo, los JAR creados con la herramienta jar (suministrados con el JDK) do tienen el manifiesto primero, y por lo tanto se ha convertido en una convención.

2

La herramienta jar con el JDK los agrega automáticamente en primer lugar, por lo que no debería ser todo lo que tiene que hacer . Si realmente desea comprobar, obtenga un editor hexadecimal y busque las cadenas 'META-INF' y 'MANIFEST.MF' antes de cualquier otro nombre de archivo.

+0

Gracias, podría ser útil en algunos casos ¿Qué pasa con las herramientas de línea de comando? – Osw

+0

Para la edición hexadecimal? Realmente no conozco las herramientas de línea de comandos para ello, pero también podría simplemente abrirlo con el Bloc de notas y buscar las cadenas allí, simplemente no será tan bonito como con un editor hexadecimal. –

+0

para verificar. como "jar --verify-order-of-manifest my.ajr" – Osw

Cuestiones relacionadas