将Java 7 javac输出的.class文件标记为1.6.0版(即0x32)
printf“ x00 x00 x00 x32” | dd of = Example.class seek = 4 bs = 1 count = 4 conv = notrunc
(根据http://en.wikipedia.org/wiki/Java_class_file#General_layout)
如果将其放入文件名(使用$ 1作为文件名)
j6patch,则可以使用以下命令来处理所有类文件:
找 。-name *。class | xargs -I {} ./j6patch {}我在大型(〜4.8 MB jar)代码库上使用
RetroTranslator了它,甚至在Java 6 jar上使用了Java,因此Java
7语言功能可以在以Java 5运行的应用程序上使用。Java 7编译器(
javac)还有很多其他功能可以显着提高性能的优化(例如逃逸分析)。
使用
RetroTranslator与
-verify -target 1.5和JRE 1.6运行时JAR允许验证没有Java 7运行功能的使用。



