使用检测的 JDK7 编译代码存在已知的兼容性问题。至于http://www.oracle.com/technetwork/java/javase/compatibility-417013.html
版本号为 51 的类文件是使用类型检查验证器专门验证的,因此这些方法必须在适当的时候具有 StackMapTable 属性。对于版本 50 的类文件,如果文件中的堆栈映射丢失或不正确,Hotspot JVM 将(并继续)故障转移到类型推断验证器。对于版本 51(Java SE 7 的默认版本)的类文件,不会发生此故障转移行为。任何修改版本 51 类文件中字节码的工具都必须确保更新堆栈图信息以与字节码保持一致才能通过验证。
解决方案是使用-XX:-UseSplitVerifier
此处总结的:
https ://community.oracle.com/blogs/fabriziogiudici/2012/05/07/understanding-subtle-new-behaviours-jdk-7
它有多安全?我想甲骨文把这个检查放在里面是有原因的。如果我不使用它,我可能会冒其他问题的风险。
使用会产生什么后果-XX:-UseSplitVerifier
?
谢谢,
彼得。