我生成了两个java字节码文件1.class和2.class,如果使用hex文件查看器检查它们,它们会有所不同:
然而,反编译的p代码都是相同的:
我也可以使用jd-gui将它们反编译成Java源代码,并再次将两个字节的代码文件生成完全相同的Java源代码:
所以它看起来很好,但是当我将两个字节码副本加载到类加载器中时,1.class副本给出了以下错误:
任何人都有任何线索?
答案 0 :(得分:3)
如果您使用javap -l
打印出行号信息,则可以发现2.class
具有doIt(String, String, AppContext)
的以下行号表:
LineNumberTable:
line 56: 0
line 57: 11
line 58: 19
line 60: 23
line 61: 65
根据这一点,行号61链接到字节码索引65,而相同的方法仅由64字节定义。因此,此表不正确并且抛出验证器错误。