我正在使用来自商业供应商的大型Java Web应用程序.我收到了来自供应商的补丁,其中包含一个新的.class文件,该文件可以解决我们在软件中遇到的问题.过去,应用此供应商的补丁程序会导致出现新的且完全不相关的问题,因此我希望在将其应用于测试实例之前了解所做的更改.
我并排获得了两个.class文件,一个是从当前运行的版本中提取的,另一个是来自供应商的. JAD和JReversePro分别将两个版本反编译和反汇编到同一输出.但是,.class文件的大小不同,我看到输出的差异od -x
,所以它们肯定不相同.
我可以采取哪些其他步骤来确定两个文件之间的区别?
感谢您的好评.由于javap -c
两个类文件的输出也相同,我将得出结论,Davr的权利和供应商发送给我一个安慰剂.虽然我因为这个原因接受了Davr的答案,但是Chris Marshall和John Meagher让我接受了javap,所以感谢你们三个人.
它们可能只是使用新版本的java编译器或不同的优化设置等编译它,因此功能相同,代码相同,但输出字节码略有不同.
如果您正在寻找API级差异,javap工具可以提供很大帮助.它将输出方法签名,并且可以将这些签名输出到纯文本文件,并使用普通的diff工具进行比较.