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

Java10编译的类能在9上运行吗?[副本]

太叔景曜
2023-03-14

如果我没有理解错的话,Java10的二进制形式与Java9是100%相同的,所以它不会产生任何问题。

我的假设正确吗?

共有1个答案

戎元忠
2023-03-14

这与Java 10无关;规则和以前一样。

在Java的每个版本中,classfile版本号都是递增的。您可以在较新的Java运行时运行较旧的类文件(您可以在Java10上运行20年前在Java1.0下编译的文件!),但您可以在较旧的运行时运行较新的类文件从来都不是事实。这一点在Java10中没有改变。

但是,如果不使用自旧版本以来引入的新特性,您可以编译类,使它们在旧版本上运行。这过去是通过-source-target开关来完成的:

// Run this on Java 8
javac -source 6 -target 6 Foo.java
javac --release 9
 类似资料:
  • 我有一个jar文件在某些特性只属于(用于ex lambda表达式),所以它是在中编译的。同一jar具有属于和的一些特性。现在,我希望当用户在中运行这个jar时,相关类应该可以工作,因为他/她只想要在上工作的功能。如果他/她想要与Java8相关的功能,他将使用运行它。

  • 我在我的源代码中使用Java10 API,当我尝试用maven和思想编译这段代码时,它会抛出一个错误: 我的环境: > JDK 10 Maven:3.6 想法 如果我删除这个API,我就没事了。 我确实遵循以下事情: < li >向pom添加编译器选项 将 IDEA 语言级别更改为 java10 文件- 以上两个不起作用。

  • 主要内容:JIT编译器语法,JIT编译器的风险和假设JIT 编译器是用 C++ 编写的,用于将 Java 转换为字节码。现在 Java 10 可以选择启用基于 Java 的实验性 JIT 编译器 Graal 来代替标准的 JIT 编译器。Graal 正在使用 Java 9 中引入的 JVMCI,即 JVM 编译器接口。 Graal 在 Java 9 中也可用。使用 Java 10,我们可以启用 Graal 来测试和调试实验性 JVM 编译器。 JI

  • 当我在macOS塞拉上使用Oracle 10.0.1从Maven原型1.3版创建一个新的IntelliJ 2018.1项目时,我在执行Maven时会遇到此错误。 [ERROR]无法执行目标org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test(default-test)on project h2e2: Exection default-

  • 问题内容: 我正在尝试在OSX上交叉编译go应用程序,以为Windows和Linux构建二进制文件。我已经阅读了所有可以在网上找到的东西。我发现的最接近的示例已发布(除了有关go- nuts邮件列表的许多未完成的讨论之外): http://solovyov.net/en/2012/03/09/cross-compiling- go/ 但它不适用于我的安装。我去了1.0.2。由于1.0.2是最近的版

  • 如上所述,在iOS 8发布后,我是否能够用Swift编写代码并使其在iOS 7上工作?或者它只在iOS 8上工作? 如果您的回答是“是的,它将在iOS 7及更早版本上工作”,我还有一个问题: iOS7和更早版本如何知道Swift的语法并拥有这些更快的功能?或者我错过了一些关于如何编译应用程序的基本知识?)