Comment comparer deux fichiers .jar ? Ils contiennent tous deux des fichiers .class compilés.
Je veux connaître la différence en termes de changements de méthode, etc.
Comment comparer deux fichiers .jar ? Ils contiennent tous deux des fichiers .class compilés.
Je veux connaître la différence en termes de changements de méthode, etc.
JAPICC l'utilisation de l'échantillon :
japi-compliance-checker OLD.jar NEW.jar
Exemples de rapports pour log4j : http://abi-laboratory.pro/java/tracker/timeline/log4j/
PkgDiff l'utilisation de l'échantillon :
pkgdiff OLD.jar NEW.jar
Voir exemple de rapport pour args4j.
Clirr l'utilisation de l'échantillon :
java -jar clirr-core-0.6-uber.jar -o OLD.jar -n NEW.jar
@NikolayKuznetsov, non, ces outils ont un noyau différent. pkgdiff - comparaison visuelle des déclarations de classes, japi-compliance-checker et clirr - analyse des changements (le premier est écrit en perl, le second - en java).
Avez-vous essayé d'intégrer quelque chose avec TeamCity ? Il semble que clirr ait un plugin Maven et qu'il existe également un outil appelé JAPI-Checker.
C'est de la force brute, mais c'est exactement la façon dont je le ferais. (Sauf que je pourrais utiliser jar
pour extraire le contenu, au lieu de renommer le fichier et d'utiliser la fonction pkunzip
.)
Vous pouvez remplacer l'étape 3 par un appel à javap -c
pour s'en tenir au bytecode (surtout si par "modifications de méthode", le PO entendait des modifications de la signature d'une méthode).
Extrayez chaque jar dans son propre répertoire à l'aide de la commande jar avec les paramètres xvf, c'est-à-dire jar xvf myjar.jar
pour chaque pot.
Ensuite, utilisez la commande UNIX diff
pour comparer les deux répertoires. Cela montrera les différences entre les deux répertoires. Vous pouvez utiliser diff -r dir1 dir2
Deux récursions et affichage des différences dans les fichiers texte de chaque répertoire (.xml, .properties, etc).
Cela montrera également si les fichiers de classe binaires sont différents. Pour comparer réellement les fichiers de classe, vous devrez les décompiler, comme l'ont fait remarquer d'autres personnes.
Utilisez Décompilateur Java pour transformer le fichier jar en fichier de code source, et ensuite utiliser WinMerge pour effectuer la comparaison.
Vous devez consulter le détenteur du droit d'auteur du code source pour savoir si vous pouvez le faire.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.