在编译java版本时,会遇到source和target这两个可选选项。source后面指明了一个版本,target后面指明了一个版本。其中target指明的版本必须大于或者等于source指明的版本。
source后面声明了一个版本,告诉编译器,按照此处声明的Java SE版本的Java编程语言规则来编译源文件。不能使用后面版本引入的新特性。
target后面声明了一个版本,告诉编译器,生成的class文件要在声明的版本及以后更新的版本的虚拟机上运行。
针对某个具体的java版本,source可以指明的版本和target可以指明的版本也不是完全随意的,是限定了部分版本。例如,在windows cmd窗口下输入javac命令,然后回车,可以看到这两个选项可能的取值,例如(注:我当前的java版本是19.0.1):
用maven编译时,生成的有效pom文件中,有跟java编译source和target有关的项,例如:
ecclipse的java工程目录中,.settings目录下的org.eclipse.jdt.core.prefs文件中有跟source和target有关的项,例如: