错误:生成路径指定执行环境 JavaSE-10。工作区中未安装严格兼容的 JRE。

2022-09-04 22:16:48

我在 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

以及我在 VSCode 中的设置:java.home

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


答案 1

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

<properties>
        <java.version>1.11</java.version>
</properties>

答案 2

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

  • 确保安装了 JDK 10
  • 根据限制,使用“”作为数组中的JavaSE-10namejava.configuration.runtimessettings.json

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

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

根据:

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

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

    • 该设置应该用于指向JLS使用的JDK,如果没有显式覆盖,也应该使用代码编译java.home
    • 引用的变量有一个优先级,即:
      • VS Code 设置中的设置(工作区,然后是用户设置)java.home
      • 环境变量JDK_HOME
      • 环境变量JAVA_HOME
      • 在当前系统路径上
    • 要针对不同的 JDK 进行编译,请在相应的(即工作区和/或用户)中设置 :java.configuration.runtimessettings.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
        },
      ]
      
    • 注意:我不确定为什么这个例子有个,但来自他们自己的WikiVS市场描述的例子只有一个。default

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

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

示例代码片段来自 :java.configuration.runtimessettings.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"
        }
    ]
    
  • 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"
        }
    ]
    

推荐