【问题标题】:Using alternative maven and java version in vscode integrated terminal在 vscode 集成终端中使用替代的 maven 和 java 版本
【发布时间】:2021-02-09 19:43:48
【问题描述】:

我想将vscode 集成终端中的maven版本和java版本设置为系统环境变量中指定的版本以外的版本。我在 vscode 中使用“Maven for Java”扩展。

我不想更改我的系统环境变量/每次我需要在我的 主要和次要编程设置。

到目前为止,我已经在 settings.json 中指定了 "java.configuration.runtimes" 和其他一些内容。 语言服务器识别此设置 - 一切正常。 但是在集成终端运行java -versionmvn -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


【解决方案1】:

当你在VS Code的集成终端中运行java --version时,它会搜索环境变量中设置的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 Compiler Plugin – Setting the -source and -target of the Java Compiler

【讨论】:

    猜你喜欢
    • 2020-02-24
    • 2019-06-12
    • 2022-01-08
    • 2020-07-05
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2022-01-24
    相关资源
    最近更新 更多