错误:构建路径指定了执行环境 JavaSE-10。工作区中没有安装严格兼容的 JRE。

Che*_*075 8 java visual-studio-code java-11

我在 VSCode 工作区中设置 JRE 时遇到问题。我认为问题是正确设置我的java.homesettings.json但我仍然收到此错误:

Build path specifies execution environment JavaSE-10. There are no JREs installed in the workspace that are strictly compatible.

我在这里查看了答案(警告 - 构建路径指定执行环境 J2SE-1.4),但该解决方案适用于 Eclipse 而不是 VSCode。

我认为这是因为 JRE 指定了 Java10 而我使用的是 Java11。

关于如何为 VSCode 设置 JRE 的任何建议?

另外,这是我正在使用的 Java 版本和我的设置。

$ /usr/libexec/java_home -V

Matching Java Virtual Machines (1):
    11.0.1, x86_64: "Java SE 11.0.1"    /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

java.home在 VSCode 中的设置:

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

reb*_*0tz 7

要完全消除警告/错误,我相信您需要:

  • 确保已安装 JDK 10
  • 根据限制,使用“ JavaSE-10”作为name数组java.configuration.runtimes中的settings.json

鉴于这个问题是在 2018 年提出的,对于我当前版本的 VS Code (1.49.2),它将在“兼容”模式下使用更高的 JDK 版本,并且类似的消息只是警告

由于我自己在弄清楚和配置所有内容时遇到了一些困难,而且这在 Google 搜索中仍然排名靠前,因此我正在记录设置的完整说明java.configuration.runtimes(特别是关于 WindowsWSL),因为对我来说最好不要更改使用该设置的整个默认 JDK java.home(特别是因为如果使用 JDK 版本 < 11,这也可能会破坏 JSL,如下所述)。

根据:

  • https://code.visualstudio.com/docs/java/java-project#_configure-jdk

    • Java 语言服务器需要 Java SE 11 或更高版本
  • https://github.com/redhat-developer/vscode-java#setting-the-jdk

    • java.home设置应该用于指向 JLS 使用的 JDK,如果没有显式覆盖,也应该用于代码编译
    • 引用的变量 有优先级,即:
      • java.homeVS Code 设置中的设置(工作然后用户设置)
      • 环境JDK_HOME变量
      • 环境JAVA_HOME变量
      • 在当前系统路径上
    • 要针对不同的 JDK 进行编译,请java.configuration.runtimes在相应的settings.json(即工作区和/或用户)中设置:
      "java.configuration.runtimes": [
        {
          "name": "JavaSE-1.8",
          "path": "/path/to/jdk-8",
        },
        {
          "name": "JavaSE-11",
          "path": "/path/to/jdk-11",
        },
        {
          "name": "JavaSE-14",
          "path": "/path/to/jdk-14",
          "default": true
        },
        {
          "name": "JavaSE-15",
          "path": "/path/to/jdk-15",
          "default": true
        },
      ]
      
      Run Code Online (Sandbox Code Playgroud)
    • 注意:我不确定为什么该示例有两个s,但来自他们自己的 WikiVS 市场描述的default示例只有一个。

要编辑settings.json添加(或编辑)java.configuration.runtimes设置:

  1. 按 CTRL+,(逗号)
  2. 选择正确的“标题”/settings.json您正在尝试编辑(即用户或特定工作区)(显示 3 个环境的屏幕截图
  3. java.configuration.runtimes在搜索框中输入“ ”
  4. 如果返回“未找到设置”,请settings.json通过单击窗口右上角附近的“打开设置(JSON)”按钮直接编辑文件(如上面的屏幕截图所示)
  5. 编辑相应的内容settings.json并输入您的自定义java.configuration.runtimes代码段(如上所示),确保仅使用允许的“ name”(如上所述)并使用正确的路径(考虑是 Windows 还是 Linux 路径 - 后者适用于 WSL )
  6. 关闭settings.json编辑窗口
  7. 设置您的 Mavenpom.xmlmaven.compiler.source在出现提示时maven.compiler.target同步项目的 Java 类路径和配置(这也会更新您的 Eclipse '和)(如果它也存在)org.eclipse.jdt.core.prefsorg.eclipse.jdt.core.compiler.codegen.targetPlatformorg.eclipse.jdt.core.compiler.complianceorg.eclipse.jdt.core.compiler.source

示例java.configuration.runtimes片段来自settings.json

  • Windows(已安装 JDK 1.8 和 12)

    "java.configuration.runtimes": [
        {
            "name": "JavaSE-1.8",
            "path": "C:\\Program Files\\Java\\jdk1.8.0_261"
        },
        {
            "name": "JavaSE-12",
            "path": "C:\\Program Files\\Java\\jdk-12.0.1"
        }
    ]
    
    Run Code Online (Sandbox Code Playgroud)
  • WSL(远程)(已安装 JDK 1.8 和 11):

    "java.configuration.runtimes": [
        {
            "name:": "JavaSE-1.11",
            "path": "/usr/lib/jvm/java-11-openjdk-amd64"
        },
        {
            "name": "JavaSE-1.8",
            "path": "/usr/lib/jvm/java-8-openjdk-amd64"
        }
    ]
    
    Run Code Online (Sandbox Code Playgroud)


小智 5

就我而言,我已将 Maven 设置为 VSCode 中的 Java 构建环境。对于 maven,我发现 pom.xml 中的一个构建属性设置为 Java 1.8 版,该版本比我使用的要旧,即 1.11。一旦我更新了如下属性,警告就消失了。

<properties>
        <java.version>1.11</java.version>
</properties>
Run Code Online (Sandbox Code Playgroud)