Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VS代码&;WSL2-将Java语言级别指定为1.8_Java_Lambda_Visual Studio Code_Java 8_Vscode Settings - Fatal编程技术网

VS代码&;WSL2-将Java语言级别指定为1.8

VS代码&;WSL2-将Java语言级别指定为1.8,java,lambda,visual-studio-code,java-8,vscode-settings,Java,Lambda,Visual Studio Code,Java 8,Vscode Settings,我在WSL2中使用VS代码,并安装了大量Java扩展,因为正常的Java程序运行良好,能够从VS代码中运行和调试 虽然当我开始使用Java8特定的特性(如Lambda)时,它开始抱怨Java的源代码级别 我已经为Java Home配置了以下环境变量 应该在设置中指定什么属性来确定源级别为1.8而不是更低 编辑: 底部的蓝色条表示,出于某种原因,当前的Java运行时是J2SE1.5。见附件 单击后,它要求添加以下属性:java.configuration.runtimes,因此我在我的WSL2

我在WSL2中使用VS代码,并安装了大量Java扩展,因为正常的Java程序运行良好,能够从VS代码中运行和调试

虽然当我开始使用Java8特定的特性(如Lambda)时,它开始抱怨Java的源代码级别

我已经为Java Home配置了以下环境变量

应该在设置中指定什么属性来确定源级别为1.8而不是更低

编辑: 底部的蓝色条表示,出于某种原因,当前的Java运行时是J2SE1.5。见附件

单击后,它要求添加以下属性:
java.configuration.runtimes
,因此我在我的WSL2设置中添加了以下VS代码-仍然没有效果

"java.configuration.runtimes": [
{
  "name": "JavaSE-1.8",
  "path": "/usr/lib/jvm/zulu-8-amd64",
  "default": true
}

]

我将spring框架与gradle、lombok插件和skdman一起使用(除了gradle之外,maven也很好,我建议使用它们,它们都很好),但我相信我的配置对每个人都有用,所以就这样

有一件事我可能会补充说,我在使用带有命令行的插件时遇到了奇怪的错误,gradle wich在我开始仅使用vscode插件接口时得到了纠正,因此我建议您尝试一下,如果您还没有使用插件按钮,请使用插件按钮

在launch.json上,我有以下调试配置:

{
  "name": "Spring Project ???",
  "type": "java",
  "request": "launch",
  "cwd": "${workspacefolder}",
  "console": "internalConsole",
  "mainClass": "br.com.meuProject.???",
  "projectName": "???",
  "args": []
}
  • 请注意,cwd类似于workspacefolder,但您可以将其更改为其他值​​与fileDirname一样,在这些情况下,还可以定义变量“program”的值
在settings.json中,我有以下环境设置:

"java.semanticHighlighting.enabled": true,
"java.configuration.checkProjectSettingsExclusions": false,
"java.home": "C:\\Users\\name\\.sdkman\\candidates\\java\\current",
"java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx1G -Xms100m -javaagent:\"/home/user/.vscode/extensions/gabrielbb.vscode-lombok-1.0.1/server/lombok.jar\"",
  • 注意“java.home”定义了您是java_home变量
  • 注意,“java.jdt.ls.vmargs”定义了构建java时传递给命令行的变量
希望能有所帮助。干杯

我的答案是它从项目的构建文件中获取语言级别的设置。因此,我为maven编译器插件添加了一个基本POM文件,其中包含正确的源代码和目标配置,并重新启动了IDE。瞧,它起作用了

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
    <source>${maven.compiler.source}</source>
    <target>${maven.compiler.target}</target>
</configuration>

org.apache.maven.plugins
maven编译器插件
3.8.1
${maven.compiler.source}
${maven.compiler.target}

我认为如果您使用jdk 11或更高版本,您可能会发现无论您如何配置
settings.json
文件,语言级别都不会改变

问题在于eclipse的设置。在
${WorkSpaceRoot}\.setting\org.eclipse.jdt.core.prefs
中,有3个设置:
targetPlatform
合规性
源代码
,需要更改为
1.8
或更高版本

.classpath
文件中:


您可以看到有一个
JavaSE-1.8
,您可以将其更改为其他版本(应该满足eclipse设置)


还有一种快速的方法:vscode可以在工作区中搜索号码(在您的情况下是
1.5
),然后替换它们。

您使用Maven吗?如果您使用maven,则需要将maven编译器插件源和目标元素设置为1.8:。这里没有maven-只是一个带有公共静态void main的简单Java程序。。。想做一些快速测试/原型设计…可能有点愚蠢的问题,但是,如果你通过“java-version”检查你的java版本?在vscode之外,在WSL2中,你能编译一个使用lambda的.java文件吗?或者它只是不在vscode中工作?是的,它不在vscode中工作。在外面工作很好。问题在于如何在VS代码中将源代码级别配置为1.8。即使在VS代码中正确设置了JAVA_HOME,它看起来还是默认为1.5或低于1.8的值……您能提供一些关于您所做工作的详细信息吗?我已经安装了Java13,但它显示的是语言级别J2SE-1.5。我想不出如何解决这个问题。我甚至不能使用var关键字。嗨@Aamir,你在使用基于Maven的项目吗?如果是,那么您可以使用Java版本配置maven编译器插件,IDE将从中选择。我编辑了我的答案,加入了一个片段,谢谢。我必须将1.13指定为maven.compiler.source和target,以使VSCode意识到我使用的是Java13