2009-03-16 2 views
5

Sto riorganizzando il nostro codice java e volevo confrontare i file jar risultanti.Perché questi due file jar con contenuti identici hanno dimensioni di file diverse?

Quando costruisco nel vecchio albero dei sorgenti, ottengo un file di dimensioni barattolo di 3360081.

Nel nuovo albero dei sorgenti è 3360128.

faccio un "barattolo tvf jarfile" e poi striscia le date fuori dal file.

La lista si presenta così:

 0 Mon Mar 16 10:41:16 EDT 2009 META-INF/ 
    102 Mon Mar 16 10:41:14 EDT 2009 META-INF/MANIFEST.MF 
    0 Mon Mar 16 10:41:14 EDT 2009 decodes/ 

Dopo la spoglierò le date, la lista si presenta così:

 0 META-INF/ 
    102 META-INF/MANIFEST.MF 
    0 decodes/ 

I due elenchi vaso sono identici.

Che cosa causerebbe una differenza di 47 byte in file jar "identici"?

sto facendo funzionare la compilazione su RedHat Linux 4.

+0

Quali sono le differenze tra il "vecchio" e "nuovo" albero dei sorgenti? Hai rinominato qualcosa? – panschk

risposta

7

tempi di modifica del file dei file compilati sono più probabilmente la ragione. Inoltre, i tuoi file di classe potrebbero essere effettivamente diversi. Se hai riorganizzato la struttura del pacchetto, lo faranno sicuramente.

+0

I tempi di modifica del file vengono eliminati dall'elenco dei jar. Esistono solo file e nomi di classe. – Mel

+2

A chi importa dell'inserzione? I tempi di modifica sono memorizzati all'interno del file JAR. Ovviamente cambiano quando si ricompila il codice e si crea un nuovo file JAR. – Bombe

+0

Accetto, i tempi sono memorizzati e compressi, quindi la dimensione JAR cambia. – ReneS

2

Probabilmente non è il caso - ma per caso si stanno utilizzando versioni di compilatori diverse (anche differenze di versione minori) durante la compilazione delle due basi di origine?

1

Se si utilizza BeyondCompare (o simile) diffarerà i file jar e identificherà i diversi file all'interno degli archivi (fino alle differenze di riga/carattere per un file di testo, o semplicemente evidenzierà i file binari che sono stati modificati).

(non credo che i tempi di modifica del file sono memorizzati nella loro rappresentazione di testo in formato .jar, e non credo faranno contribuiscono le dimensioni dei file .jar)