Java编译:源,目标和发行版支持的版本

时间:2018-08-05 08:39:04

标签: java compilation javac

我可能会对遗留项目进行一些交叉编译,并且我注意到在最近的JDK中,我们仅限于sourcetargetrelease JVM参数的某些特定版本。 br /> 如何获得这些参数的受支持版本?

1 个答案:

答案 0 :(得分:2)

实际上,受支持的值取决于所使用的主要JDK版本。
您可以在各个主要JDK版本的javac文档中找到信息(以下引用了链接)。

关于这些参数的一些一般说明:

  • Maven配置中的sourcetarget版本不应优于所使用的JDK版本。
    JDK的较旧版本无法编译,因为它不知道其规范。

  • Java 9中存在release自变量。

  • 由于sourcetarget相同,因此应优先使用release自变量而不是sourcetarget。指定的时间较短,可以确保更好的交叉编译兼容性,即使您不进行交叉编译,也不会造成损害。
    有关更多说明,请参阅this excellent answer

源/目标/发行版支持的版本:

For Java 7

  • 受支持的source
  

1.3、1.4、1.5(也为5),1.6(也为6)和1.7(也为7)。

  • 受支持的target
  

1.1、1.2、1.3、1.4、1.5(也为5),1.6(也为6)和   1.7(也是7)。

For Java 8

  • 受支持的source
  

1.3、1.4、1.5(也为5),1.6(也为6),1.7(也为7)和1.8(也为8)。

  • 受支持的target
  

1.1、1.2、1.3、1.4、1.5(也为5),1.6(也为6),1.7   (也为7)和1.8(也为8)。

For Java 9

  • 受支持的source
  

1.6(也为6),1.7(也为7),1.8(也为8)和9。

  • 受支持的target
  

1.6(也是6),1.7(也是7),1.8(也是8)和9。

  • 受支持的release
  

6、7、8和9。

For Java 10

  • 受支持的source
  

1.6(也是6),1.7(也是7),1.8(也是8),9和10。

  • 受支持的target
  

1.6(也为6),1.7(也为7),1.8(也为8),9和10。

  • 受支持的release
  

6、7、8、9和10。

您可以在the javac documentation for JDK 1.8JDK 9JDK 10中获得更多详细信息