当前位置: 首页 > 面试题库 >

将Java 7编译为Java 6

吴鸿彩
2023-03-14
问题内容

我知道Java 7不能提供Java 7的运行时功能,但是由于 没有添加
新的字节码,因此新的字节码invokedynamic仅与非Java语言有关,我想知道转换Java会有多困难switch纯Java
6的7个源代码(新语句,菱形运算符)(即能够开始将源转换为Java 7而又不失去Java 6兼容性)。

有指针吗?


问题答案:

将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运行功能的使用。



 类似资料:
  • 我的pom文件列表 但是,在时,我得到 当我运行时,我看到实际上我使用的是Java6 它可以在哪里定义?我有源(d)my.zshrc多次。

  • 我有Java8SDK和运行时,以及一个只使用Java7个功能的项目。我想知道我是否可以设置intellij来构建一个Java-7级的jar,从命令行肯定可以做到这一点? 到目前为止,我已经尝试过简单地将项目语言级别设置为7作为实验,但这显然是不够的,也不是我真正需要的。 我在SO上也看到过这个问题:"Intellij IDEA使用java7编译器编译,当我已经将其配置为使用Java6",但我的项目

  • 我一定是个反Maven的人,因为每次我尝试使用它时,我都会花很多时间挣扎,然后就放弃了。我的最新情况是,我不能编译Java7源代码,尽管有1.7的JDK。 以下是的输出。有趣的是,当我使用Maven 3.0.4时,错误消息是而不是使用Maven 3.2.1的 正如您所看到的,我使用的是Maven的最新版本,Maven使用的是Java1.7。 我认为脚本正在添加,因为我的环境变量没有指定它。 我正在

  • Java8引入了重要的新语言特性,如lambda表达式。 语言中的这些变化是否伴随着编译字节码中的重大变化,从而阻止它在不使用某些反向翻译器的情况下在Java7虚拟机上运行?

  • 我是Android Studio的初学者,我希望主要活动是在java上而不是在kotlin上。我测试了一些可用的堆栈溢出解决方案,例如: Menu->Tools->Kotlin->将kotlin反编译到java 菜单>工具>Kotlin>显示Kotlin字节码 单击“反编译”按钮 复制java代码 并且总是禁用“反编译”按钮。

  • 我试图用maven在heroku simple servlet上上传。在本地,我的servlet工作正常,但当我使用: 我得到“构建失败”的错误消息: 我在系统变量中将所有内容都更改为Java 1.7,maven运行的是Java 1.7,javac版本是1.7? 我在这里错过了什么吗? 编辑:我的JAVA_HOME和错误截图