2009-03-16 9 views
5

私はJavaコードベースを再編成しており、結果として得られるjarファイルを比較したいと考えていました。内容が同じ2つのjarファイルのファイルサイズが異なるのはなぜですか?

私は古いソースツリーでビルドすると、私は新しいソースツリーで3360081.

のjarファイルのサイズを取得し、それは私が「ジャーTVFのjarファイル」、次にストリップを行う3360128.

ですファイルの日付。

リストは次のようになります。

 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/ 

私は日付を除去した後、リストは次のようになります。

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

2つのjarファイルのリストが同一です。

「同一の」jarファイルで47バイトの違いが生じる原因は何ですか?私はRedHatのLinux上でコンパイルされたファイルの4

+0

の違いは何ですか(私はファイルの更新時間は.jarファイル形式でのテキスト表現に格納されている、と私は、彼らがファイルサイズを.jarファイルに貢献します信じていないとは思わない)

"古い"ソースツリーと "新しい"ソースツリー?名前を変更しましたか? – panschk

答えて

7

ファイルの修正時刻をコンパイルを実行しています

は、おそらく理由です。また、クラスファイルは実際には異なる場合があります。あなたがあなたのパッケージ構造を再編成した場合、彼らは最も確かにそうなります。

+0

ファイルの変更時刻がjarのリストから削除されます。ファイルサイズとクラス名だけがあります。 – Mel

+2

リストは誰が気にしますか?変更時刻は、JARファイル内に格納されます。コードを再コンパイルして新しいJARファイルを作成すると、それらは明らかに変更されます。 – Bombe

+0

同意すると、時刻は保存され、圧縮されるため、JARサイズが変更されます。 – ReneS

2

おそらくそうではありませんが、2つのソースベースをコンパイルする際に、異なるコンパイラバージョン(マイナーバージョンの違いもあります)を使用していますか?

1

BeyondCompare(またはこれに類するもの)を使用すると、jarファイルを差分し、アーカイブ内の異なるファイルを特定します(テキストファイルの行/文字の違いまで、または変更されたバイナリファイルを強調表示するだけです)。

関連する問題