2011-01-18 4 views
6

Ho incontrato un problema interessante che è assolutamente nuovo per me. Come ho improvvisamente scoperto, la specifica Jar dice che, essendo inclusa, META-INF e MANIFEST.MF devono essere la prima e la seconda voce del pacchetto *.jar e non solo la directory e il file all'interno dell'archivio.Come posso verificare l'ordine di MANIFEST.MF in jar?

Sto lavorando con Java framework molto attento a questo requisito e non tanto dettagliato. Come posso verificare che META-INF e MANIFEST.MF siano ordinati correttamente all'interno di jar?

UPDATE: Molti barattoli sono di terze parti e ce ne sono molti. Non sono in grado di aprire questi vasi in notepad, excel, hexeditor, photoshop o qualsiasi altra ricerca di sequenze di byte. Ho bisogno di uno strumento da riga di comando. Grazie!

UPDATE 2: Ecco il motivo per cui sto facendo questa domanda: http://www.mail-archive.com/[email protected]/msg17097.html

+1

In realtà la specifica non dice che devono essere prima. Tuttavia lo strumento da riga di comando 'jar' li posiziona per primi e alcuni strumenti si aspettano che siano, ad esempio perché uno strumento potrebbe eseguire rapidamente la scansione dei manifesti da un'intera directory di file JAR. Quindi è davvero più una convenzione che un requisito. –

+0

@Neil Bartlett, grazie per il chiarimento, ma rende le cose peggiori per me :(Ecco la fonte del problema: http://www.mail-archive.com/[email protected]/msg17097.html idee? – Osw

+0

Aha, quindi questa è un'istanza di uno strumento assumendo che MANIFEST venga prima! Per rispondere alla tua domanda originale, 'jar tf foo.jar' dovrebbe elencare il contenuto del JAR in ordine. –

risposta

5

Il seguente comando elenca il contenuto di un barattolo in ordine:

jar tf foo.jar 

Si noti che non v'è alcun obbligo effettivo nella specifica JAR per META-INF/MANIFEST.MF ad apparire prima. Tuttavia i JAR creati dallo strumento jar (fornito con JDK) do hanno prima manifest e quindi sono diventati una convenzione.

2

Lo strumento vaso con il JDK li aggiunge automaticamente prima, quindi non ci dovrebbe essere nulla di quello che dovete fare . Se si vuole veramente controllare, ottenere un editor esadecimale e cercare le stringhe 'META-INF' e 'MANIFEST.MF' prima di qualsiasi altro nome di file.

+0

Grazie, potrebbe essere utile in alcuni casi , per quanto riguarda gli strumenti da riga di comando? – Osw

+0

Per la modifica esadecimale? Non conosco veramente gli strumenti della riga di comando per questo, ma potresti anche essere in grado di aprirlo semplicemente con Blocco note e cercare le stringhe lì, semplicemente non sarà bello come con un editor esadecimale. –

+0

per la verifica. come "jar --verify-order-of-manifest my.ajr" – Osw