赞
踩
报错背景:
在使用一个生成加签方法时运行报错"Exception in thread “main” java.lang.VerifyError: Expecting a stackmap frame at branch target 69"
堆栈信息:
Exception in thread "main" java.lang.VerifyError: Expecting a stackmap frame at branch target 69 Exception Details: Location: com/MD5.getInputStreamMd5(Ljava/io/InputStream;)Ljava/lang/String; @0: ldc Reason: Expected stackmap frame at this location. Bytecode: 0x0000000: 1208 b800 564c 1110 64bc 084d 033e 2a2c 0x0000010: 0311 1064 b600 5c36 0415 0402 9f00 1815 0x0000020: 049e ffed 2b2c 0315 04b6 0060 1d15 0460 0x0000030: 3ea7 ffdd 1d9a 0006 122b b02b b600 64b8 0x0000040: 0066 4b2a b04b 122b b0 Exception Handler Table: bci [0, 12] => handler: 69 bci [0, 12] => handler: 69 bci [14, 25] => handler: 69 bci [14, 25] => handler: 69 bci [36, 44] => handler: 69 bci [36, 44] => handler: 69 bci [59, 67] => handler: 69 bci [59, 67] => handler: 69
解决方法:
该报错通常发生在Java字节码验证阶段,表明在类加载时,JVM无法验证类的二进制表示是否符合Java虚拟机规范的要求。错误中,指出期望在分支目标处(branch target)的位置有栈映射框架(StackMapTable)属性,但实际上缺少了该属性。
错误可能是由于Java版本不同、编译器版本不同或使用了不同的字节码增强工具所导致的。
一:设置JVM参数:对于使用JDK 1.8编译的代码,可以尝试设置 -noverify 参数来禁用字节码验证。
二:如果使用的JDK1.8以下开发,可以尝试添加 -XX:-UseSplitVerifier参数。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。