Ich habe eine example.jar-Datei. Ich versuche, eine Klassendatei im Jar zu aktualisieren. Wenn ich die Klassendatei mit dem Dienstprogramm jar oder zip packe ( Kommandozeilen-Linux )
Ich habe es versucht :
jar uf myJarFile.jar MyclassFile.class
zip -u meine MyJarFile.jar MyclassFile.class
Ich bekomme eine Prüfsumme von XXYYZZ.
Aber wenn ich die gleiche Klassendatei in Windows packe, benutze ich 7zip (GUI) Ich bekomme eine andere Prüfsumme, zB MMNNOO. Dies liegt an der Änderung des Kompressionsverhältnisses. Die mittlere Größe ist ebenfalls unterschiedlich.
Jetzt frage ich mich, wie ich das gleiche Kompressionsverhältnis erreichen kann dh gleiche Prüfsumme .
EDIT 1: Ich habe Glas in beiden Plattformen ausprobiert. beide produzieren unterschiedliche cksum ... :(
quelle
Antworten:
Die Prüfsumme ist ein Hash aller in der Datei enthaltenen Bits.
Windows und Linux / UNIX verwenden unterschiedliche Dateiendungen. Wenn Sie für jedes Betriebssystem mit demselben Tool eine Prüfsumme erstellen, wird immer eine andere Prüfsumme erstellt, es sei denn, Sie ändern die Zeilenenden speziell.
Überprüfen Sie anhand der Dateigröße, ob Sie dasselbe Komprimierungsverhältnis haben.
Das mag etwas anders sein, sollte aber minimal sein.
Der Punkt der Prüfsummen ist nicht zu sehen, ob 2 Dateien, die zu verschiedenen Zeiten oder an verschiedenen Orten erstellt wurden, gleich sind, sondern ob jemand oder etwas eine Datei geändert hat.
Wenn ich Ihnen eine Postleitzahl senden sollte, könnte ich sie prüfen und Ihnen dann die Postleitzahl und die von mir erstellte Prüfsumme per E-Mail zusenden.
Sie haben die Zip-Datei erhalten, die Prüfsumme erneut, und wenn die Prüfsummen übereinstimmen, hat sich die Datei seit dem Versand nicht geändert.
BEARBEITEN - Ich gehe mit dieser Antwort davon aus, dass die JAR unter Linux kompiliert und komprimiert wurde und auch unter Windows kompiliert und komprimiert wurde
quelle