![](/img/trans.png)
[英]Build path specifies execution environment J2SE-1.5. There are no JREs installed in the workspace that are strictly compatible with this environment
[英]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>
要完全消除警告/错误,我相信您需要:
settings.json
的java.configuration.runtimes
数组中使用“ JavaSE-10
”作为name
鉴于问题是在 2018 年提出的,对于我当前版本的 VS Code (1.49.2),它将在“兼容”模式下使用更高的 JDK 版本,类似的消息只是警告。
由于我自己在弄清楚和配置所有内容时遇到了一些困难,而且这在 Google 搜索中仍然排名java.configuration.runtimes
,因此我记录了设置java.configuration.runtimes
的完整说明(特别是关于 Windows和WSL),因为它更适合于我不要使用java.home
设置更改整个默认 JDK(特别是因为如果使用 JDK 版本 < 11,这也可能会破坏 JSL,如下所述)。
根据:
https://code.visualstudio.com/docs/java/java-project#_configure-jdk :
https://github.com/redhat-developer/vscode-java#setting-the-jdk
java.home
设置应该用于指向 JLS 使用的 JDK,如果没有显式覆盖,也应该用于代码编译java.home
设置(工作区然后是用户设置)JDK_HOME
环境变量JAVA_HOME
环境变量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,但是来自他们自己的Wiki和VS 市场描述的例子只有一个。 要编辑settings.json
以添加(或编辑) java.configuration.runtimes
设置:
settings.json
您正试图编辑(即用户或特定的工作空间/ S)(截图显示3个环境)java.configuration.runtimes
”settings.json
文件(如上图所示)settings.json
并输入您自定义的java.configuration.runtimes
片段(如上例所示),确保仅使用允许的“ name
”(如上所述)并使用正确的路径(考虑到它是否是 Windows或 Linux 路径 - 后者适用于 WSL)settings.json
编辑窗口pom.xml
的maven.compiler.source
和maven.compiler.target
,在出现提示时同步项目的 Java 类路径和配置(这也将更新您的 Eclipse org.eclipse.jdt.core.prefs
' org.eclipse.jdt.core.compiler.codegen.targetPlatform
, org.eclipse.jdt.core.compiler.compliance
和org.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.