我们注意到在Java 6上编译我们的类时,它们的大小始终大于Java 5。
我知道到目前为止字节码没有改变,所以我猜想Java 6编译器添加了更多内容。是否所有这些都是必需的,还是有任何方法可以关闭它并仍然编译Java 6源代码?
-target 1.5
选项生成与早期版本相同的字节码。堆栈映射属性是Code属性的属性表中的可变长度属性。该属性的名称为StackMapTable。在类型检查(§4.11.1)的过程中使用此属性。
堆栈映射属性由零个或多个堆栈映射帧组成。每个堆栈映射帧指定了字节码偏移量、本地变量的验证类型(§4.11.1)以及操作数栈的验证类型(明确或隐式)。
javap
命令转储文件内容,查看是否有明显异常。Java 6类文件中可能存在额外的属性。