当前位置: 首页 > 知识库问答 >
问题:

Java8代码可以编译为在Java7 JVM上运行吗?

解河
2023-03-14

Java8引入了重要的新语言特性,如lambda表达式。

语言中的这些变化是否伴随着编译字节码中的重大变化,从而阻止它在不使用某些反向翻译器的情况下在Java7虚拟机上运行?

共有1个答案

景元徽
2023-03-14

不,在源代码中使用1.8特性要求您以1.8 VM为目标。我刚刚尝试了新的Java8版本,并尝试用-target1.7-source1.8进行编译,编译器拒绝:

$ javac Test -source 1.8 -target 1.7
javac: source release 1.8 requires target release 1.8
 类似资料:
  • 我正在使用java 11处理一些依赖项并编译到旧版本。我将一个依赖项迁移到Java11并正常工作,但我们仍然必须在Java8上运行Tomcat 7或8。是否可以使用标志来编译使用,或并在8上运行的代码? 发布标志表明应该可以: --发布版本 针对特定 VM 版本的公共、受支持和记录的 API 进行编译。支持的版本目标为 6、7、8 和 9。 这个项目是一个依赖项,独立运行在SprinBoot2.1

  • 问题内容: Java 8引入了重要的新语言功能,例如lambda表达式。 语言的这些变化是否伴随着已编译字节码的重大变化,从而阻止了它在Java 7虚拟机上运行而无需使用某些逆向转换程序? 问题答案: 不可以,在源代码中使用1.8功能要求你以1.8 VM为目标。我刚刚尝试了新的Java 8版本,并尝试使用进行编译,但编译器拒绝了:

  • 问题内容: 命令可以运行已编译的Scala代码吗?如果是这样,我们为什么要使用排他命令? 问题答案: 如果您在类路径中包含了Scala的所有必要运行时库(scala-library.jar,scala-swing.jar …),则可以运行Scala生成的字节代码。scala命令自动执行此操作,并支持特定于Scala的命令行参数。

  • 问题内容: 我尝试在Android上的Janino上使用这些东西,并得出结论说,它们根本无法在Dalvik VM中运行。 所以我只想问一个简单的问题:在 Android上 ,是否有可能在运行时编译包含代码的字符串以供应用程序使用。如果是这样,是否有让我这样做的库和/或您可以共享一个代码示例来做到这一点? 对于 (一个非常简单的) 示例,如果我有一个包含以下内容的String对象: 作为一根巨大的弦

  • 我的构建服务器安装了Open JDK 8,我的正式服安装了oracle JRE 8。是否有可能在开放的JDK中编译代码并在Oracle JRE 8中部署工件?

  • 当我尝试安装一个app时,有两种可能: null 当APK文件存在于构建文件夹中时运行应用程序(工作非常好) 运行->运行应用程序(预期项目将生成,应用程序将安装,但显示上述错误!) 执行之后清理和运行应用程序的相同过程