VS代码&;WSL2-将Java语言级别指定为1.8
我在WSL2中使用VS代码,并安装了大量Java扩展,因为正常的Java程序运行良好,能够从VS代码中运行和调试 虽然当我开始使用Java8特定的特性(如Lambda)时,它开始抱怨Java的源代码级别 我已经为Java Home配置了以下环境变量 应该在设置中指定什么属性来确定源级别为1.8而不是更低 编辑: 底部的蓝色条表示,出于某种原因,当前的Java运行时是J2SE1.5。见附件 单击后,它要求添加以下属性: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
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”的值
"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时传递给命令行的变量
<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