Finden Unterschiede zwischen den Versionen einer Java-Klasse-Datei
Arbeite ich mit einem großen Java-web-Anwendung, die von einem kommerziellen Anbieter. Ich habe ein patch vom Hersteller in form einer neuen .Klasse Datei, die soll um ein Problem zu beheben haben wir mit der software. In der Vergangenheit, anwenden von patches, die vom Hersteller verursacht haben neue und völlig unabhängig Probleme, so dass ich verstehen möchten, die Veränderung selbst, bevor Sie auf einer test-Instanz.
Habe ich die beiden .die class-Dateien nebeneinander, die einen Auszug aus der aktuell Laufenden version und der aktualisierten Version von der Hersteller. JAD und JReversePro beide zu dekompilieren und zu disassemblieren (jeweils) die beiden Versionen auf den gleichen Ausgang. Jedoch, die .class-Dateien sind in verschiedenen Größen, und ich sehe Unterschiede in der Ausgabe von od -x
, also Sie sind definitiv nicht identisch.
Welche anderen Schritte könnte ich nehmen, um zu bestimmen, den Unterschied zwischen den beiden Dateien?
Fazit:
Danke für die tollen Antworten. Da javap -c
Ausgabe ist auch identisch für die beiden class-Dateien, ich bin dabei zu dem Schluss, dass Davr das Recht und der Verkäufer schickte mir ein placebo. Während ich die Annahme Davr Antwort für diesen Grund, war es Chris Marshall und John Meagher, drehte mich auf javap, also danke an Euch alle drei.
InformationsquelleAutor Anonymoose | 2008-09-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es möglich, dass Sie gerade kompiliert haben es mit einer neuen version der java-compiler, oder mit unterschiedlichen Optimierungseinstellungen etc, so dass die Funktionalität die gleiche ist, und der code ist der gleiche, aber die output-bytecode ist etwas anders.
InformationsquelleAutor davr
Wenn Sie auf der Suche für API-Ebene Unterschiede der javap tool eine große Hilfe sein kann. Es wird die Ausgabe der Methode Signaturen und kann ausgegeben werden, um eine nur-text-Dateien, und im Vergleich mit normalen diff-tools.
InformationsquelleAutor John Meagher
Sie könnten versuchen, mit einem diff-tool (wie SourceGear ist kostenlos DiffMerge-tool) auf die dekompiliert Quellen. Das sollte die Datei aufzunehmen unterschieden, aber es wird wahrscheinlich pick up "unwichtigen" Unterschiede, zum Beispiel wenn die Variablen wurden unterschiedlich benannt, in den beiden Versionen.
http://www.sourcegear.com/diffmerge/
InformationsquelleAutor alastairs
Können Sie javap (in $JDK_HOME/bin) zu dekompilieren java .class-Dateien. Es wird Ihnen sagen (zum Beispiel) die class-Datei version unter anderem
InformationsquelleAutor oxbow_lakes