【问题标题】:Error: Build path specifies execution environment JavaSE-10. There are no JREs installed in the workspace that are strictly compatible.错误:构建路径指定执行环境 JavaSE-10。工作空间中没有安装严格兼容的 JRE。
【发布时间】:2019-05-17 23:32:38
【问题描述】:

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

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

我在这里查看了答案 (Warning - Build path specifies execution environment 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"

【问题讨论】:

  • 我不太清楚 VScode 在寻找什么,但是从 Java11 开始就没有 JRE。这只是 JDK。
  • 如果您使用的是 Maven,您是否尝试过将 <source>11</source> <target>11</target> 添加到您的 POM 中?
  • @DodgyCodeException 我会试试的!谢谢
  • 我也有这个问题。我正在使用遗留代码,我已将源和目标设置为 8。并使用 sdkman.io 安装了 jre/sdk,我应该配置什么?
  • @DodgyCodeException 如果您将上述评论添加为答案并要求搜索者将其标记为答案(如果他/她满意),那就太好了。这样,这个问题的解决方案也将是可搜索的!不过,请注意引用的评论对我有帮助。

标签: java visual-studio-code java-11


【解决方案1】:

我刚换了:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
</properties>

收件人:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

1.7 -> 1.8

1.8 是我的 java 版本

在您的终端中:

java -version

我会得到:

openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~20.04-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

我正在使用 java 1.8 所以它必须是 1.8

如果您使用的是1.11,那么它必须是1.11 等等...

【讨论】:

    【解决方案2】:

    我正在开发 VSCode,我刚刚做了下一件事 我将 pom.xml 中的版本更改为我在计算机上安装的版本

    <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.11</maven.compiler.source>
            <maven.compiler.target>1.11</maven.compiler.target>
        <java.version>1.11</java.version>
        </properties>
    

    之前我有 1.8,现在有 1.11 这个问题与另一个问题类似: https://stackoverflow.com/a/67993329/13011316

    【讨论】:

      【解决方案3】:

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

      • 确保已安装 JDK 10
      • 根据limitations,在settings.jsonjava.configuration.runtimes 数组中使用“JavaSE-10”作为name

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

      由于我自己在搞清楚和配置所有内容时遇到了一些困难,而且这在 Google 搜索中仍然排名很高,我正在记录设置 java.configuration.runtimes 的完整说明(尤其是关于 Windows WSL),因为我最好不要使用 java.home 设置更改整个默认 JDK(特别是因为如果使用 JDK 版本

      根据:

      • 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,如果未显式覆盖,也应使用代码编译
        • 引用的变量有一个优先级,即:
          • VS Code 设置中的java.home 设置(workspace 然后是user 设置)
          • JDK_HOME 环境变量
          • JAVA_HOME 环境变量
          • 在当前系统路径上
        • 要针对不同的 JDK 进行编译,请在相应的 settings.json(即工作区和/或用户)中设置 java.configuration.runtimes
          "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
            },
          ]
          
        • 注意:我不确定为什么示例有 两个 defaults,但他们自己的示例 WikiVS marketplace description 只有一个。

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

      1. 按 CTRL+,(逗号)
      2. 选择您尝试编辑的正确“标题”/settings.json(即用户或特定工作区/s)(screenshot showing 3 environments)
      3. 在搜索框中输入“java.configuration.runtimes
      4. 如果返回“未找到设置”,请通过单击窗口右上角附近的“打开设置 (JSON)”按钮直接编辑 settings.json 文件 (根据上面的截图)
      5. 编辑适当的settings.json 并输入您自定义的java.configuration.runtimes sn-p(如上例所示),确保仅使用允许的“name”(如上所述)并使用正确的路径(考虑到帐户,如果是 Windows 或 Linux 路径 - 后者适用于 WSL)
      6. 关闭settings.json编辑窗口
      7. 设置您的 Maven pom.xmlmaven.compiler.sourcemaven.compiler.target,同步项目的 Java 类路径和配置 when prompted(这也将更新您的 Eclipse org.eclipse.jdt.core.prefs'org.eclipse.jdt.core.compiler.codegen.targetPlatformorg.eclipse.jdt.core.compiler.compliance 和 @987654358 @ 相应地(如果它也存在)

      示例java.configuration.runtimes sn-p 来自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"
            }
        ]
        
      • 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"
            }
        ]
        

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          我记得 jkd 11 中不再有 jre 了。 也许 java 可以在没有 jre 的情况下在 java 11 中运行。 ------我是一个新程序员,所以这只是我的想法,可能是错误的。

          【讨论】:

          猜你喜欢
          • 2015-06-13
          • 1970-01-01
          • 2014-01-17
          • 1970-01-01
          • 2022-12-19
          • 1970-01-01
          • 1970-01-01
          • 2020-12-26
          • 1970-01-01
          相关资源
          最近更新 更多