我一直在使用NetBeans 11在工作计算机上从事一些班级项目的工作,并将我的进度上传到github。最近,我回到家,将进度拉到仍然装有netbeans 8的笔记本电脑上。突然,当我尝试运行代码时,我得到了:
javac: invalid target release: 13
通过浏览stackoverflow和其他此类论坛,我发现13是指JDK的版本。显然,我的设置有些不匹配(或者我使用的是旧版本,但NetBeans想使用更新的版本,或者反之亦然)。
我进入project > properties > sources
,看到一个标题为“源/二进制格式”的下拉栏,其中选择了JDK 13。我将其降至9(完全随机选择),然后尝试再次运行我的代码。瞧,它奏效了。
我的问题很简单:我刚刚做了什么?为什么起作用?对我的程序有什么影响?
如果您选择回答,请注意,我对Java的内部运作了解甚少,因此请您提供一个简单的解释。我只知道如何编写代码,而不知道幕后发生的事情。我很想盲目地进行编码,但是我认为这可能是一个学习点。也许不是。
答案 0 :(得分:2)
基本上,您的IDE会根据语言规则检查您的代码,由于语言版本不同,这些代码会有所不同。 Java 7没有lambda,而Java 8没有。您的项目已配置为可以根据Java 13的规则进行检查,但是较旧版本的NetBeans无法执行此操作,因此您已要求对照Java 9的规则进行检查。除非您要使用Java 10或更高版本中引入的功能,否则这对您的项目没有影响。
此下拉菜单的另一个目的是要编译项目,以便可以使用较旧版本的Java运行该项目。如果您要为仍然只安装Java 8的用户分发软件,那么您希望将项目限制为Java 8。