La comparaison de deux .les fichiers jar
Comment comparer les deux .les fichiers jar?
Deux d'entre eux ont compilé .les fichiers de classe.
Je veux que la différence en termes de méthode, etc.
Vous devez vous connecter pour publier un commentaire.
JAPICC, exemple d'utilisation:
japi-compliance-checker OLD.jar NEW.jar
Exemples de rapports pour log4j: http://abi-laboratory.pro/java/tracker/timeline/log4j/
PkgDiff, exemple d'utilisation:
pkgdiff OLD.jar NEW.jar
Voir exemple de rapport pour args4j.
Clirr, exemple d'utilisation:
java -jar clirr-core-0.6-uber.jar -o OLD.jar -n NEW.jar
jar
pour en extraire le contenu, au lieu de renommer le fichier et l'utilisationpkunzip
.)javap -c
pour le garder en bytecode (surtout si par la "méthode des modifications" de l'OP signifie des changements à la méthode de la signature).diff
ing dejavap
oujad
sortie hors de contrôle.Si vous sélectionnez les deux fichiers dans IntellijIdea et appuyez sur
Ctrl + D
ensuite, il va vous montrer la diff. J'utilise Ultime et ne sais pas si elle va travailler avec Communauté édition.- Je utiliser pour ZipDiff lib (ont à la fois Java et ant API).
Extrait de chaque pot à son propre répertoire en utilisant le pot de commande avec les paramètres xvf. c'est à dire
jar xvf myjar.jar
pour chaque pot.Ensuite, utilisez la commande UNIX
diff
de comparer les deux répertoires. Cela permettra de montrer les différences dans les répertoires. Vous pouvez utiliserdiff -r dir1 dir2
deux recurse et de montrer les différences dans le texte de fichiers dans chaque répertoire(.xml, .propriétés, etc).Cela permettra également de montrer si binaire des fichiers de classe différents. Pour comparer les fichiers de classe, vous aurez à décompiler comme indiqué par d'autres.
Dans Linux/CygWin une pratique script que j'utilise parfois:
Voici mon script pour faire le processus décrit par sje397:
Je peux le faire tourner sur Windows à l'aide de GIT pour Windows. Il suffit d'ouvrir une invite de commande. Exécuter bash, puis d'exécuter le script à partir de là.
diff -r ${EXT_DIR1} ${EXT_DIR2}
ou${DIFF} ${EXT_DIR1} ${EXT_DIR2}
(si la réutilisation de votre variable déclarée). Pour ceux qui sont sur cygwin, le script a presque fonctionné pour moi, sauf deux choses que j'ai changé: 1) j'ai eu à utiliser les haut-javap au lieu de jad, parce que je ne peux pas télécharger jad (enterp. pare-feu ...); 2) commejar xf
ne pas comprendre les chemins comme/cygwin/c/rest/of/path
qui est retourné parpwd
dans cygwin, j'ai dû convertir enc:/rest/of/path
:JAR_DIR=${PWD}
,JAR_DIR=${JAR_DIR#*/cygdrive/c}
,JAR_DIR="c:$JAR_DIR"
Utilisation Java Decompiler à son tour le fichier jar dans le fichier de code source, et ensuite utiliser WinMerge pour effectuer la comparaison.
Vous devriez consulter le titulaire du droit d'auteur du code source, pour voir si c'est OK pour le faire.
Voici un aparently outil gratuit http://www.extradata.com/products/jarc/
S'il vous plaît essayer http://www.osjava.org/jardiff/ - outil est vieux et la dépendance de la liste est grande. De la documentation, il ressemble à la peine d'essayer.
utilisation java decompiler et décompiler tous les .les fichiers de classe et de les enregistrer tous les fichiers du projet de la structure .
ensuite utiliser fondre visualisateur et de comparer des dossiers ..