Visual Studio Code 显示“需要运行 Java 11 或更高版本。请下载并安装最新的 JDK”

IT小君   2021-12-04T06:03:41

今天 Visual Studio Code 开始向我展示一个弹出窗口:

需要 Java 11 或更高版本才能运行。请下载并安装最新的JDK。

我需要使用 JDK 8(在 Apache Beam 上工作,这是最后一个受支持的版本)。我一直在努力解决这个问题,直到出现这个问题之前都没有遇到任何问题。

我已经通读了这篇文章并实现了那里提到的要点。

这是我在 Visual Studio Code 上的工作区设置(我已经仔细检查了路径)

{
    "java.configuration.updateBuildConfiguration": "disabled",
    "java.home": "/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home",
    "java.configuration.runtimes": [
        {
          "name": "JavaSE-1.8",
          "path": "/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home",
          "default": true
        },
        {
          "name": "JavaSE-11",
          "path": "/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home",
        }
      ]
}

其他有用的信息:

➜ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

➜ which java
/usr/bin/java

尽管我已经在 Visual Studio Code 上成功运行 JDK 8 一段时间了,但今天开始发生这种情况。我不记得更新 Visual Studio Code,所以我不确定为什么现在显示这个,因为显然弹出窗口自 4 月中旬以来一直显示(在vscode-java Gitter 频道上询问)。

评论(9)
IT小君

更改自

"java.home": "/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home"

"java.home": "/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home"

并保持其余设置不变。

2021-12-04T06:03:41   回复
IT小君

不推荐的解决方法(不是面向未来的):

一种解决方法是将扩展“Language Support for Java(TM) by Red Hat”从最新版本 0.65.0 降级。回到

vscode-java 版本 0.64.1

(除非您对 JDK 版本有限制,否则不建议这样做,这是可能的,请参阅底部的备注。如果可以,请改用该线程的已接受答案。)。

需要从Java 11 或更新版本中获取才能运行。请下载并安装最新的 JDK”#1543,这是如何安装较早的扩展版本(感谢发布此内容的 GitHub 用户):

在此处输入图片说明

请注意:

这应该只与那些不能安装 JDK 11 或更高版本的人相关:

  • 由于是 32 位系统(并且他们同时被迫使用 Oracle JDK 8 作为 32 位的最后一个 Oracle 版本,因此不允许他们使用推荐的 OpenJDK 14 - 请参阅JDK 要求→ 单击Java Development Kit链接顶部→ 跳转到https://adoptopenjdk.net/ )
  • 由于对 64 位系统的限制:
    • 一个可能的原因是您不允许更新 Gradle 并且您的 Gradle 版本低于 4.7,请再次查看github 讨论
    • 一个“不太合理”的限制可能是一些有效的懒惰。您可能只是不想安装新的 JDK 并将 Visual Studio Code 设置更改回旧的 JDK 只是因为 Java 扩展的版本更改:)。

如果您没有重要限制,则不应这样做。最合理的限制是你使用 Windows 32 位,这应该只与那些有旧上网本的人有关。

通常情况下:升级,然后您仍然可以通过根据JDK 要求更改设置来返回使用较旧的 Java 版本

我是否需要将我的项目迁移到 Java 11?

“不,你没有!好吧,你应该,因为我们不是在这里判断。从 Java 1.5 到 14,仍然可以编译/运行 Java 应用程序,只要在用户的 settings.json。”

--> 这意味着您可以升级扩展,至少安装 Java 11 (JDK 11),并使用您选择的 Java 运行时 <= 您安装的 Java 版本。

有关 Windows 64 位的详细说明,请参阅“需要运行 Java 11 或更高版本。请下载并安装最新的 JDK”#1543

2021-12-04T06:03:42   回复
IT小君

对于未来的读者。如果您使用扩展名“Spring Boot Tools”,您可能会遇到与此类似的错误。我将 JAVA_HOME 设置为 java 8,但需要 java 11 才能使用 Spring Boot Tools Language Server。似乎 Spring Boot Tools 使用您的 JAVA_HOME 环境变量或 PATH 环境变量Spring Project Issue 中的任何内容要覆盖您的 JAVA_HOME 变量,您需要修改spring-boot.ls.java.home设置。

  1. 打开 Visual Studio 代码
  2. CRTL + , 打开设置
  3. 搜索 spring-boot.ls.java.home
  4. 选择“在 settings.json 中编辑”
  5. 您的 Java 11 安装 → "spring-boot.ls.java.home": "C:\\Program Files\\Java\\jdk-11.0.10"
  6. 保存并重启 VS Code

先决条件:安装 Java 11

2021-12-04T06:03:42   回复
IT小君

在 Windows 中,

  1. 下载并安装 JDK 11。

下载并安装 JDK 11

  1. 安装完成后,C:\Program Files\Java你会看到这样的东西

C:\程序文件\Java

如您所见,我们在C:/Program Files/Java/jdk-11.0.8.

  1. 打开 VSC 并转到设置(CTRL + 或管理图标(左下角)> 设置)并搜索 javahome

VSC 设置 Java 主页

  1. 单击“在 settings.json 中编辑”,添加C://Program Files//Java//jdk-11.0.8到 java.home 并保存文件。你应该有这样的东西

Java Home VS Code 设置

{
    "java.home": "C://Program Files//Java//jdk-11.0.8"
}
  1. 重启VS Code,你会看到这样的

安全警告

安全警告!您是否允许此工作区设置 java.home 变量?java.home: C://Program Files//Java//jdk-11.0.8

单击允许,您就可以开始了。


注意:如果您遇到此错误并且依赖于 Java 8,fbricon 会提到,

你仍然可以用 Java 8 编译你的项目。JDK11 只需要运行 vscode-java。

2021-12-04T06:03:42   回复
IT小君

关于 Java 11 要求:

Eclipse 平台已决定将 Java 11 作为其 2020 年 9 月版本的最低要求。请参阅升级用于在Eclipse SDK目标环境九月的Eclipse版本...

因为vscode-java依赖于 Eclipse JDT.LS 服务器,所以对vscode-java 的要求相同但是时间线更加激进:事实上,vscode-java通常使用依赖于前沿 JDT 特性的 JDT.LS 构建,因此有效地发布了 Eclipse Platform/JDT 的预发布版本。自 2020 年 7 月 22 日起,现在需要 Java 11 才能运行vscode-java

这是来自:https://github.com/redhat-developer/vscode-java/wiki/JDK-Requirements#java.configuration.runtimes

2021-12-04T06:03:43   回复
IT小君

我遇到了同样的问题,对我的setting.json文件的以下更改解决了这个问题。非常感谢这篇关于补丁说明的评论

"java.home": "C:/Program Files/AdoptOpenJDK/jdk-11.0.8.10-hotspot",
"java.configuration.runtimes": [
    {
        "name": "JavaSE-1.8",
        "path": "C:/Program Files/Java/jdk1.8.0_211",
        "default": true
    },
    {
        "name": "JavaSE-11",
        "path": "C:/Program Files/AdoptOpenJDK/jdk-11.0.8.10-hotspot",
    }
]
2021-12-04T06:03:43   回复
IT小君
  1. 只需卸载所有以前的 JDK,即小于或等于 JDK 11。

  2. https://www.oracle.com/java/technologies/javase-jdk11-downloads.html重新安装 JDK 11

  3. 确保您的系统变量 JAVA_HOME 指向最新安装的 JDK,如“C:\Program Files\Java\jdk-11.0.8”(适用于 Windows)

  4. 重新启动 Visual Studio 代码

  5. 转到工作区设置Java:主页

  6. 选择“在 settings.json 中编辑”

  7. 您的 settings.json 应如下所示:

    settings.json_image

    {
        "java.completion.favoriteStaticMembers": [
    
            "org.junit.Assert.*",
            "org.junit.Assume.*",
            "org.junit.jupiter.api.Assertions.*",
            "org.junit.jupiter.api.Assumptions.*",
            "org.junit.jupiter.api.DynamicContainer.*",
            "org.junit.jupiter.api.DynamicTest.*",
            "org.mockito.Mockito.*",
            "org.mockito.ArgumentMatchers.*",
            "org.mockito.Answers.*"
        ],
        "java.home": "C://Program Files//Java//jdk-11.0.8"
    }
    
2021-12-04T06:03:43   回复
IT小君

对于不想安装Java 11并继续使用Java 8 的人您必须安装以前版本的扩展“Red Hat redhat.java 对 Java(TM) 的语言支持”。Java 8 的扩展版本应为 0.64.1。

请参考以下帖子中的答案-

Visual Studio Code 显示“需要运行 Java 11 或更高版本。请下载并安装最新的 JDK”

2021-12-04T06:03:44   回复
IT小君

在 Fedora 32 上,我终于通过java-11-openjdk java-11-openjdk-devel在 vscode 中安装和设置此配置使其正常工作

"java.home": "/usr/lib/jvm/jre-11-openjdk",
2021-12-04T06:03:44   回复