2009-03-16 37 views
5

Tôi đang sắp xếp lại cơ sở mã java của mình và muốn so sánh các tệp jar kết quả của chúng tôi.Tại sao hai tệp jar này có nội dung giống hệt nhau có kích thước tệp khác nhau?

Khi tôi xây dựng trong cây nguồn cũ, tôi nhận được một kích thước file jar của 3360081.

Trong cây nguồn mới đó là 3360128.

tôi làm một "jar tvf jarfile" và sau đó dải ngày ra khỏi tệp.

Việc niêm yết trông như thế này:

 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/ 

Sau khi tôi cởi ngày, việc niêm yết trông như thế này:

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

Hai danh sách jar giống hệt nhau.

Điều gì sẽ gây ra chênh lệch 47 byte trong tệp jar "giống hệt"?

Tôi đang chạy bản dịch trên RedHat Linux 4.

+0

Sự khác biệt giữa cây "cũ" và "mới"? Bạn đã đổi tên bất cứ điều gì? – panschk

Trả lời

7

Thời gian sửa đổi tệp của các tệp được biên dịch có lẽ là lý do chính đáng nhất. Ngoài ra, các tệp lớp học của bạn thực sự có thể khác nhau. Nếu bạn tổ chức lại cấu trúc gói của bạn, họ chắc chắn nhất sẽ.

+0

Thời gian sửa đổi tập tin bị tước khỏi danh sách bình. Chỉ có các tệp và tên lớp. – Mel

+2

Ai quan tâm đến danh sách? Thời gian sửa đổi được lưu trữ bên trong tệp JAR. Chúng rõ ràng thay đổi khi bạn biên dịch lại mã của bạn và tạo một tệp JAR mới. – Bombe

+0

Đồng ý, thời gian được lưu trữ và nén, vì vậy kích thước JAR thay đổi. – ReneS

2

Nó có lẽ không phải là trường hợp - nhưng bạn có thể sử dụng các phiên bản trình biên dịch khác nhau (thậm chí là các phiên bản nhỏ khác nhau) trong khi biên soạn hai cơ sở nguồn không?

1

Nếu bạn sử dụng BeyondCompare (hoặc tương tự), nó sẽ diff file jar của bạn và xác định các tập tin khác nhau trong tài liệu lưu trữ (xuống sự khác biệt dòng/nhân vật cho một tập tin văn bản, hoặc chỉ cần đánh dấu các tập tin nhị phân mà đã thay đổi).

(Tôi không nghĩ rằng thời gian sửa đổi tệp được lưu trữ trong phần văn bản của chúng ở định dạng .jar và tôi không tin rằng chúng sẽ đóng góp vào kích thước tệp .jar)

Các vấn đề liên quan