【问题标题】:VSCode + maven project wrong java versionVSCode + maven项目错误java版本
【发布时间】:2022-01-24 05:49:40
【问题描述】:

JAVA_HOME:

PS C:\Users\Himanshu\Desktop\work\demo> $Env:JAVA_HOME
C:\Program Files\Java\jdk-17.0.1

Java version mismatch

请看上图。为什么它显示 Java 1.6 并在指向 java 17 的括号中显示? 这也不是编译 lambda 函数。

看起来像 VSCode 中的一个错误。

编辑:我切换到 Intellij Idea。它工作顺利。它正在使用 JAVA_HOME。 :)

EDIT2:按照 cmets 的要求

PS C:\Windows\System32> (Get-Command java.exe).Path
C:\Program Files\Common Files\Oracle\Java\javapath\java.exe

PS C:\Windows\System32> java --version
java 17.0.1 2021-10-19 LTS
Java(TM) SE Runtime Environment (build 17.0.1+12-LTS-39)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.1+12-LTS-39, mixed mode, sharing)

【问题讨论】:

    标签: maven visual-studio-code


    【解决方案1】:

    Ctrl+Shift+P,键入(自动完成):“Java:配置运行时”(每个项目;)


    当“编辑 java 版本”(17 旁边的钢笔符号)时,我被重定向到 pom.xml>project>properties>java.version(在这个特定项目中):

     <properties>
        ...
        <java.version>17</java.version>
        ...
     </properties>
    

    什么时候,我删除/评论&lt;java.version&gt;(java.version 仅在 poms 中有效,它映射它(在我的示例中明确地,如 spring-boot-parent)):

      <properties>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
      </properties>
    

    (Ref)


    ... maven 默认值(省略这些属性/未配置编译器插件时)是:1.5!!!

    这会导致(我的 VS 代码)“最匹配”执行环境(在我的情况下为“JavaSE-1.8”):


    ...,在“Settings>Extensions>Java>Configuration>Runtimes (edit in settings.json)”中配置,如:

    ...
       "java.configuration.runtimes": [        
            {
                "name": "JavaSE-1.8",
                "path": "C:\\Program Files\\Java\\jdk1.8.0_311"
            },
            {
                "name": "JavaSE-11",
                "path": "C:\\Program Files\\Java\\jdk-11.0.12"
            },
            {
                "name": "JavaSE-16",
                "path": "C:\\Program Files\\Java\\jdk-16.0.2"
            },
            {
                "name": "JavaSE-17",
                "path": "C:\\Program Files\\Java\\jdk-17"
            }
        ],
    ...
    
    • 使这些设置保持一致
    • 更新到最新的 JDK(次要)更新
    • 并且:在 %PATH% 中有不同的 java.exe! (与JAVA_HOME一致)

    应该解决我们的“Java 运行时问题”(使用Official Java Extension)。


    但请记住,其他扩展(可以)具有自定义的“java runtime/jdk”配置。我目前认为:

    • 声响
    • 分级

    (设置>搜索设置>"java...")

    【讨论】:

    • 此页面上列出的 Java 版本是 1.6,但在括号中它指向版本 17。请参阅我的问题中的图片。
    • 在(新!?)屏幕截图中,它不是“java 版本”,而是“语言(向下兼容)级别”。
    • 这太令人困惑了。为什么它不能检测到 JAVA_HOME 并在任何地方使用它?为什么它显示 1.6 ?为什么即使 JAVA_HOME 指向 jdk17 也无法编译 lambda? Intellij idea 设置非常顺利。
    • 也许不仅要怪JAVA_HOME,还有:%PATH% 中的“命令”...请在 pswh 中尝试:(get-command java.exe).Path 以及 git bash 中的 java --version:@ 987654336@
    • JAVA_HOME 对 maven|gradle 很重要,但我“假设”vs 代码依赖于:1. config,2. 回退到默认值(第一次运行)/%PATH%
    猜你喜欢
    • 2020-11-16
    • 2017-03-01
    • 2021-10-28
    • 1970-01-01
    • 2013-11-08
    • 2021-05-22
    • 1970-01-01
    • 2019-06-11
    • 2021-10-21
    相关资源
    最近更新 更多