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

mca*_*ado 53 java visual-studio-code

今天,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",
        }
      ]
}
Run Code Online (Sandbox Code Playgroud)

其他有用的信息:

? echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

? which java
/usr/bin/java
Run Code Online (Sandbox Code Playgroud)

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

小智 46

更改自

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

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

并保持其余设置不变。

  • mcsansado 说“我需要使用 JDK 8” (10认同)
  • 这是对的。通过将“java.home”更改为指向 JDK 11 并保持工作区配置的其余部分不变(即“java.configuration.runtimes”,默认为“JavaSE-1.8”),它就起作用了。 (4认同)

que*_*o42 16

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

一种解决方法是将扩展“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 版本。

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


小智 8

对于未来的读者。如果您使用扩展名“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


Tia*_*ica 7

在 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"
}
Run Code Online (Sandbox Code Playgroud)
  1. 重启VS Code,你会看到这样的

安全警告

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

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


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

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


小智 5

关于 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