Java_类似java.lang.VerifyError: Expecting a stackmap frame at branch target 22 in method的解决方法
报异常的方法内使用了Java 7的新特性:自动资源释放,类似于try(){},即在try后面跟一括号,在括号里面对一些资源赋值,try里面的代码块执行完毕之后会自动释放try后面的括号中声明的资源。
Java 7 会使用新的Class类型校验器,新的类型校验器将老的校验器分为两步:
1、类型推断
2、类型校验
新的类型校验器通过在javac编译时嵌入类型信息到bytecode中,省略了类型推断这一步,从而提升了classloader的性能。
Classload顺序(供参考): load -> verify -> prepare -> resove -> init
解决办法:在运行jvm参数设置 -XX:-UseSplitVerifier
如Idea: