我在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"
答案 0 :(得分:5)
就我而言,我将Maven设置为VSCode中Java的构建环境。对于maven,我发现pom.xml中的一个构建属性设置为Java版本1.8,该版本比我使用的版本早,即1.11。按如下所示更新属性后,警告消失了。
<properties>
<java.version>1.11</java.version>
</properties>
答案 1 :(得分:0)
要完全消除警告/错误,我相信您需要:
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:
https://github.com/redhat-developer/vscode-java#setting-the-jdk
java.home
设置应用于指向JLS使用的JDK,并且在未显式覆盖的情况下也应进行代码编译java.home
设置(工作区,然后是 user 设置)java.home
环境变量JDK_HOME
环境变量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
设置:
java.configuration.runtimes
(即 user 或特定的 workspace / s )(VS marketplace description) settings.json
” java.configuration.runtimes
文件
(如上图所示)settings.json
并输入您自定义的settings.json
代码段(如上所述),确保仅使用允许的“ java.configuration.runtimes
”(如上所述)并使用正确的路径(考虑到是Windows还是Linux路径-后者适用于WSL)name
编辑窗口settings.json
的{{1}}和pom.xml
,同步项目的Java类路径和配置screenshot showing 3 environments(这还将更新您的Eclipse maven.compiler.source
' maven.compiler.target
,org.eclipse.jdt.core.prefs
和org.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的情况下运行。 ------我是一个新程序员,所以这只是我的想法,也许是错误的。