为了争论,你有一些编译的.class
文件和一些源.java
文件。
您不相信类文件实际上是使用您拥有的那些源文件的相同版本构建的(例如,其他人创建了这些类但未检入源代码)。
我知道你在想什么,开发人员的噩梦。但是,是否有任何工具可以帮助反编译类文件并将这些文件与源文件进行比较并标记任何差异,例如缺少方法等?
我已手动完成此操作,反编译了一个类,并将每一行与源代码进行了比较,因此业务逻辑存在显着差异。我有几百个文件要做,有什么工具可以帮忙吗?
答案 0 :(得分:3)
我会编译您拥有的.java
个文件。然后反编译那些.class
文件和您拥有的原始.class
文件。脚本应该能够让你这么远。然后,您可以在命令行上将结果.java
文件与Meld,BeyondCompare或简称diff -ur
等工具进行比较。通过相同的反编译器运行它们至少应该给你更好的通用性,这样你的差异就会减少噪音。祝你好运,不管怎么说,这听起来都不是很有趣。
答案 1 :(得分:2)
嗯,如果您有源代码并且想要检查二进制文件是否是根据您拥有的源代码构建的,那么为什么不编译您拥有的源代码并查看结果是否与您拥有的二进制文件相匹配?
答案 2 :(得分:0)
如果你使用了超级比较应用程序
,你可以直接比较.class文件并以.java格式反编译/查看它并为其添加额外的文件格式 (http://www.scootersoftware.com/download.php?zz=kb_moreformats_win)
按照以下步骤操作 (http://www.scootersoftware.com/download.php?zz=kb_moreformats)
然后以正常方式使用该应用程序来比较包含.class文件的文件夹/ jar文件
答案 3 :(得分:0)
(虽然这是一个老话题,我仍然想提到一些未提及的工具)
Grigsoft提供了2个用于比较源代码的便捷工具。 http://www.grigsoft.com/index.htm
此外,IntelliJ IDE还有一些内置工具。您可以在树中选择2个文件,右键单击,然后选择"比较两个文件"。
答案 4 :(得分:-1)
有许多比较工具可以有效地找出两个文件之间的差异,所以我建议你使用BeyondComapare。你可以访问http://www.scootersoftware.com/,因为我是Java开发人员,我多年来一直在使用它。