繁体   English   中英

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

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

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

我在这里查看了答案( 警告 - 构建路径指定执行环境 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"

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

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

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

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

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

由于我自己在弄清楚和配置所有内容时遇到了一些困难,而且这在 Google 搜索中仍然排名java.configuration.runtimes ,因此我记录了设置java.configuration.runtimes的完整说明(特别是关于 WindowsWSL),因为它更适合于我不要使用java.home设置更改整个默认 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 Code 设置中的java.home设置(工作区然后是用户设置)
      • JDK_HOME环境变量
      • JAVA_HOME环境变量
      • 在当前系统路径上
    • 要针对不同的 JDK 进行编译, java.configuration.runtimes在相应的settings.json (即工作区和/或用户)中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 }, ]
    • 注意:我不确定为什么这个例子有两个default s,但是来自他们自己的WikiVS 市场描述的例子只有一个。

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

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

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

  • 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" } ]

我只是改变了:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM