java - 在 vscode 集成终端中使用替代的 maven 和 java 版本
问题描述
我想将vscode集成终端中的maven版本和java版本设置为系统环境变量中指定的版本以外的版本。我在 vscode 中使用“Maven for Java”扩展。
每次我需要在主要和次要编程设置之间切换时,我都不想更改我的系统环境变量/重新启动。
到目前为止,我已经"java.configuration.runtimes"
在 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 的值将优先于 [over the specification of java.home and使用JavaHome]”。尽管如此,我尝试在其中一个或另一个之间进行选择,但这并没有什么不同。
解决方案
当你java --version
在 VS Code 的集成终端中运行时,它会搜索环境变量中设置的JAVA_HOME ,所以它仍然是jdk1.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,
,它将使用环境变量中的JAVA_HOME,即 JDK1.8,您可以通过以下两种方式指定 jdk 版本:
创建maven项目时,可以手动选择jdk版本;
在 Maven 项目的pom.xml中,不要忘记重建项目:
<properties> <java.version>11</java.version> </properties>
推荐阅读
- datagrid - Material-UI DataGrid:从状态中删除一行导致无法读取属性错误
- html - 为什么显示隐藏和显示时 ngb-tabset 重置为第一个选项卡?
- php - 使用php中文本文件的文件修改时间将文件中的数据发送到客户端
- powershell - Powershell UNC 路径测试路径
- c# - C# EF 核心批量插入给出错误无法跟踪实体类型“实体”的实例,因为另一个具有相同键的实例
- c# - 实体框架 sqlquery 传递当前日期
- html - 将图像放入轮播中,似乎无法修复
- javascript - 将数组排序为自定义顺序
- nginx - 使用 Nginx 时 SSE 事件数据被切断
- python - DynamoDB 复合主键在系统内传播的最佳实践(分区键和排序键)