我用两个反编译器JD-GUI和Luyten反编译.jar文件,但结果不同。
例如,Luyten的结果使命名空间更具体。
源代码在某些行中也有所不同。
为什么两个反编译器以不同的方式反编译同一个.jar文件?
答案 0 :(得分:1)
您列出的反编译器使用不同的后端来处理java字节码的解析。
你可以想到像不同学者这样的反编译器将古代文本翻译成现代英语。由学者“Luyten”和“JD-GUI”转录的源材料是相同的,但每个学者都以不同的方式抄录文本。两者都创造了现代英语,通常是相当清晰的,但每个都有自己的微小差异。
例如:如果古代资料说明"a man reached down and picked up an apple"
学者可能会说:
那个男人拿起一个苹果。 该男子抓起一个苹果。
两者都有意义,但它们略有不同。有时人们可能比其他人更了解源材料的奇怪怪癖,从而产生比其他材料更准确的结果。
例如,JD-GUI can't decompile a method if the last instruction of a method is the last one in a try-catch block但是Procyon可以将它翻译成java就好了。