我希望将vscode 集成终端中的maven版本和java版本设置为系统环境变量中指定的版本以外的版本。我正在使用vscode中的"Maven for Java“扩展。
我不想每次需要在主程序设置和辅助编程设置之间切换时更改系统环境变量/重新启动。
到目前为止,我已经在settings.json中指定了settings.json和其他一些内容。语言服务器识别此设置--一切正常。但是,在集成终端中运行java -version和mvn -version仍然显示了我的系统环境的java版本,而且maven也有问题:
java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
mvn -version
Unrecognized option: --add-opens
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.我让mvn命令用一些设置组合运行一次,我不记得了。它使用的是新的java版本,但有趣的仍然是旧的mvn版本。
这是我的settings.json
{
"java.configuration.runtimes": [
{
"name": "JavaSE-11",
"path": "C:\\Program Files\\Java\\jdk-11.0.7+10_hotspot",
"default": true
}
],
"java.home": "C:\\Program Files\\Java\\jdk-11.0.7+10_hotspot",
"terminal.integrated.shell.windows": "C:\\Program Files\\PowerShell\\7\\pwsh.exe",
"terminal.integrated.fontFamily": "Cascadia Mono PL",
"maven.executable.path": "C:\\maven-3.6.3\\bin\\mvn",
"maven.terminal.useJavaHome": true,
"maven.terminal.customEnv": [
{
"environmentVariable": "JAVA_HOME",
"value": "C:\\Program Files\\Java\\jdk-11.0.7+10_hotspot"
},
{
"environmentVariable": "M2_HOME",
"value": "C:\\maven-3.6.3\\"
},
{
"environmentVariable": "M2",
"value": "C:\\maven-3.6.3\\bin"
},
]
}正如Maven扩展的文档所说(https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-maven)“来自maven.terminal.customEnv的值将优先于java.home和useJavaHome的规范”。然而,我试着在其中一种或另一种之间作出选择,但这并没有什么区别。
发布于 2021-02-16 02:57:36
当您在VS代码中的集成终端中运行java --version时,它将搜索环境变量中设置的JAVA_HOME,因此仍然是jdk1.8 1.8。
但是,当您像helloworld.java一样运行文件时,终端中显示的执行脚本应该包括C:\Program Files\Java\jdk-11.0.7+10_hotspot\bin\java.exe,这意味着java扩展工具确实使用jdk11来构建和编译项目。
关于maven,您仍然需要将它添加到PATH中,然后mvn --version应该在终端中工作:

如果您设置了"maven.terminal.useJavaHome": true,,它将在环境变量(即jdk 1.8)中使用JAVA_HOME,您可以使用以下两种方法指定jdk版本:
https://stackoverflow.com/questions/66126013
复制相似问题