首页 > 解决方案 > 在 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]”。尽管如此,我尝试在其中一个或另一个之间进行选择,但这并没有什么不同。

标签: javamavenvisual-studio-code

解决方案


当你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 版本:

  1. 创建maven项目时,可以手动选择jdk版本;

  2. 在 Maven 项目的pom.xml中,不要忘记重建项目:

     <properties>
         <java.version>11</java.version>
     </properties>
    

    更多信息查看Apache Maven 编译器插件 - 设置 Java 编译器的 -source 和 -target


推荐阅读