【发布时间】:2021-02-09 19:43:48
【问题描述】:
我想将vscode 集成终端中的maven版本和java版本设置为系统环境变量中指定的版本以外的版本。我在 vscode 中使用“Maven for Java”扩展。
我不想更改我的系统环境变量/每次我需要在我的 主要和次要编程设置。
到目前为止,我已经在 settings.json 中指定了 "java.configuration.runtimes" 和其他一些内容。
语言服务器识别此设置 - 一切正常。
但是在集成终端运行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 的规范]”。尽管如此,我尝试在其中一个或另一个之间进行选择,但这并没有什么不同。
【问题讨论】:
-
这个问题是合理的,但让我问一下:为什么不到处使用 Java 11 和 Maven 3.6.3?为什么您可能需要不同版本的 Maven 或 Java?
-
这很复杂——我就是做不到。主要是因为我需要为我的第一个项目提供最初预期的确切开发环境。我不能为此使用java 11,也不能使用更新版本的maven。在eclipse中很容易改变jdk环境和maven版本——为什么不在vscode中呢?它也应该是直截了当的。我暂时不想为这些项目切换到 Eclipse。
-
您知道您可以使用 JDK 11 为任何较低版本的 Java 构建,即您可以使用 JDK 11 为 Java 7 或 8 构建。而且 Maven 非常稳定。
-
一般来说,是的。但是没有给出 100% 的向后兼容性。当从旧的 Oracle jdk 切换到 openjdk 时也不会。尝试这一点时存在问题,也与 maven 版本有关。此外,生产环境不会很快切换到更新的 jre 版本,这就是为什么我仍然需要相同的旧环境进行开发。
标签: java maven visual-studio-code