2009-03-16 16 views
5

Reorganizuję naszą bazę kodu java i chciałem porównać nasze wynikowe pliki jar.Dlaczego te dwa pliki jar z identyczną zawartością mają różne rozmiary plików?

Kiedy budować w starym drzewa źródłowego, otrzymuję rozmiar pliku jar z 3360081.

W nowym drzewie źródłowym jest 3360128.

robię „jar tvf jarfile”, a następnie pas daty z pliku.

Umieszczanie wygląda następująco:

 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/ 

Po strip daty, aukcja wygląda następująco:

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

Dwa ofert jar są identyczne.

Co spowodowałoby 47 bajtową różnicę w "identycznych" plikach jar?

Używam kompilacji na RedHat Linux 4.

+0

Jakie są różnice między "stare" i "nowe" drzewo źródłowe? Czy zmieniłeś coś? – panschk

Odpowiedz

7

czasy modyfikacji pliku z skompilowanych plików są najprawdopodobniej przyczyny. Ponadto pliki klas mogą wyglądać inaczej. Jeśli zreorganizujesz swoją strukturę pakietów, z całą pewnością to zrobią.

+0

Czasy modyfikacji plików są usuwane z wykazu słoików. Istnieje tylko rozmiar pliku i nazwa klasy. – Mel

+2

Kogo to obchodzi? Czasy modyfikacji są przechowywane w pliku JAR. Oczywiście zmieniają się po przekompilowaniu kodu i utworzeniu nowego pliku JAR. – Bombe

+0

Zgadzam się, czasy są przechowywane i kompresowane, więc rozmiar JAR zmienia się. – ReneS

2

Prawdopodobnie tak nie jest - ale czy przypadkiem używasz różnych wersji kompilatora (nawet niewielkich różnic wersji) podczas kompilowania dwóch baz źródłowych?

1

Jeśli użyjesz BeyondCompare (lub podobnego), będzie on różnił twoje pliki jar i identyfikuje różne pliki w archiwach (do różnic między liniami/znakami dla pliku tekstowego lub po prostu zaznacz pliki binarne, które uległy zmianie).

(nie sądzę czasy modyfikacji plików są przechowywane w ich reprezentacji tekstu w formacie .jar, i nie wierzę, oni przyczyniają się do JAR rozmiary plików)

Powiązane problemy