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

时间:2018-12-17 15:09:36

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

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

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"

5 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

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

  • 确保已安装JDK 10
  • 按照limitations,在您的JavaSE-10的{​​{1}}数组中,将“ name”用作java.configuration.runtimes

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

由于我自己在找出并配置所有内容时遇到了一些困难,并且在Google搜索中仍然排名很高,因此我正在记录设置settings.json的完整说明(尤其是对于Windows WSL),因为对我来说最好不要使用java.configuration.runtimes设置来更改整个默认JDK(特别是因为如果使用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,并且在未显式覆盖的情况下也应进行代码编译
    • 所引用的变量有一个优先级,即:
      • VS代码设置中的java.home设置(工作区,然后是 user 设置)
      • java.home环境变量
      • JDK_HOME环境变量
      • 在当前系统路径上
    • 要针对其他JDK进行编译,请在相应的JAVA_HOME(即工作空间和/或用户)中设置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 }, ] ,但是示例来自于自己的Wiki和{{3 }}只有一个。

要编辑default以添加(或编辑)settings.json设置:

  1. 按CTRL +,(逗号)
  2. 选择您要编辑的正确“标题” / java.configuration.runtimes(即 user 或特定的 workspace / s )(VS marketplace description
  3. 在搜索框中输入“ settings.json
  4. 如果返回“找不到设置”,请直接单击窗口右上角附近的“打开设置(JSON)”按钮来编辑java.configuration.runtimes文件 (如上图所示)
  5. 编辑适当的settings.json并输入您自定义的settings.json代码段(如上所述),确保仅使用允许的“ java.configuration.runtimes”(如上所述)并使用正确的路径(考虑到是Windows还是Linux路径-后者适用于WSL)
  6. 关闭name编辑窗口
  7. 设置Maven settings.json的{​​{1}}和pom.xml,同步项目的Java类路径和配置screenshot showing 3 environments(这还将更新您的Eclipse maven.compiler.source' maven.compiler.targetorg.eclipse.jdt.core.prefsorg.eclipse.jdt.core.compiler.codegen.targetPlatform(如果也存在)

org.eclipse.jdt.core.compiler.compliance中的org.eclipse.jdt.core.compiler.source片段示例:

  • Windows(已安装JDK 1.8和12)

    java.configuration.runtimes
  • WSL(远程)(已安装JDK 1.8和11):

    settings.json

答案 2 :(得分:0)

我刚刚改变了:

<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 等等...

答案 3 :(得分:-1)

我正在研究 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

答案 4 :(得分:-2)

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

相关问题