javac:无效的目标版本:13

javac:无效的目标版本:13,java,netbeans,Java,Netbeans,我一直在使用NetBeans 11的工作计算机上进行一些课堂项目,并将我的进度上传到github。最近,我回到家里,把我的进度拉到我的笔记本电脑上,它仍然有netbeans 8。突然,当我尝试运行代码时,我得到: javac: invalid target release: 13 通过浏览stackoverflow和其他类似论坛,我推断13指的是JDK的版本。显然,我的设置中存在一些不匹配的地方(要么我使用的是旧版本,但NetBeans希望使用更新的版本,要么相反) 我进入project>pr

我一直在使用NetBeans 11的工作计算机上进行一些课堂项目,并将我的进度上传到github。最近,我回到家里,把我的进度拉到我的笔记本电脑上,它仍然有netbeans 8。突然,当我尝试运行代码时,我得到:

javac: invalid target release: 13
通过浏览stackoverflow和其他类似论坛,我推断13指的是JDK的版本。显然,我的设置中存在一些不匹配的地方(要么我使用的是旧版本,但NetBeans希望使用更新的版本,要么相反)

我进入
project>properties>sources
看到一个名为“Source/Binary Format”的下拉栏,其中选择了JDK 13。我把它降到了9(一个完全随机的选择),然后再次尝试运行我的代码。瞧,成功了

我的问题很简单:我刚才做了什么?它为什么起作用?对我的计划有什么影响吗?


如果您选择回答,请注意,我对Java的内部工作原理知之甚少,因此,请给出一个简单的解释。我只知道如何编写代码,而不知道幕后发生了什么。我很想盲目地进行编码,但我认为这可能是一个学习点。也许不是

基本上,IDE根据语言的规则检查代码,这些规则根据语言版本的不同而不同,因为例如Java 7没有lambda,但Java 8有。您的项目被配置为根据Java13的规则进行检查,但旧版本的NetBeans无法做到这一点,因此您要求根据Java9的规则进行检查。这对您的项目没有影响,除非您想使用Java10或更高版本中引入的特性


这个下拉菜单的另一个用途是,如果您想编译您的项目,以便可以使用旧版本的Java运行它。如果您正在为仍然只安装了Java 8的用户分发一个软件,那么您可能希望将项目限制为Java 8。

基本上,您的IDE根据语言的规则检查代码,这些规则根据语言版本的不同而不同,因为例如Java 7没有lambda,但Java 8有。您的项目被配置为根据Java13的规则进行检查,但旧版本的NetBeans无法做到这一点,因此您要求根据Java9的规则进行检查。这对您的项目没有影响,除非您想使用Java10或更高版本中引入的特性

这个下拉菜单的另一个用途是,如果您想编译您的项目,以便可以使用旧版本的Java运行它。如果您正在为仍然只安装了Java8的用户分发软件,那么您可能希望将项目限制为Java8