实际上,支持的值取决于使用的主要JDK版本。
你可以在网上找到这些信息
javac
各主要JDK版本的文档(链接如下)。
关于这些论点的一些一般性说明:
-
这个
source
还有
target
Maven配置中的版本不应优于使用的JDK版本。
较旧版本的JDK无法用较新版本编译,因为它不知道自己的规范。
-
注意:虽然最近的JDK可以接受
来源
编译旧的Java版本,并不意味着可以选择
来源
任何受支持的最新版本和
目标
任何记录为受支持的旧版本(见下文)。
事实上,Java版本可能会引入一些新特性,这些特性在编译时/运行时并不与旧的Java版本兼容。
例如,JDK 11可以用8作为编译类
来源
编译器版本。同时选择8作为
目标
编译版本,编译将通过。
但是如果你改变主意,想用11作为
来源
8个作为
目标
,编译将失败。
javac文档中并不总是明确记录这一点。
-
这个
release
参数存在于Java9中。
-
作为
来源
还有
目标
都是一样的
释放
争论应该优先于辩论
来源
和
目标
。它的指定时间更短,并且确保了更好的交叉编译兼容性,而且不管怎样,即使不进行交叉编译,也不会有任何影响。
有关更多解释,请参阅
this excellent answer
.
源/目标/发行版支持的版本:
For Java 7
1.3、1.4、1.5(也是5)、1.6(也是6)和1.7(也是7)。
1.1、1.2、1.3、1.4、1.5(也是5)、1.6(也是6)和
1.7(也是7)。
For Java 8
1.3、1.4、1.5(也是5)、1.6(也是6)、1.7(也是7)和1.8(也是8)。
1.1、1.2、1.3、1.4、1.5(也是5)、1.6(也是6)、1.7
(也是7)和1.8(也是8)。
For Java 9
1.6(也是6)、1.7(也是7)、1.8(也是8)和9。
1.6(也是6)、1.7(也是7)、1.8(也是8)和9。
6、7、8和9。
For Java 10
1.6(也是6)、1.7(也是7)、1.8(也是8)、9和10。
1.6(也是6)、1.7(也是7)、1.8(也是8)、9和10。
6、7、8、9和10。
For Java 11
-
支持
source/target/release
:
6、7、8、9、10和11。
你可以在这里了解更多细节
the javac documentation for JDK 1.8
,
JDK 9
,
JDK 10
和
JDK 11