我如何判断 why/how 两个 class 文件不同?

How can I tell why/how two class files are different?

我正在尝试重新创建一些旧源。我有两个 类,一个来自我的新来源,一个来自丢失的来源。 类 都将反编译为相同的源代码。但是,类 的位级比较仍然显示出差异。如何判断造成这些差异的原因?

GC_

如果您想找出什么 两个类文件之间的不同,我建议您使用Krakatau disassembler in -roundtrip 模式。这会将类文件转换为人类可读的文本格式,该格式仍将 1:1 映射到类文件的精确二进制编码。然后你可以比较生成的文本文件,看看有什么不同。

我发现使用 javap 非常有帮助。

我运行这个命令对两个类:

javap -version -l -v -p -c -s -sysinfo ClassName.class > temp.txt

然后我比较了两个文件。这揭示了我正在寻找的差异。这是一个行号的事情。我发现 eclipse 的反编译器也很有用。