gradle 无法定位平台:'Java SE 11' 使用工具链:'JDK 8 (1.8)'

gradle Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'

> Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'

这看起来很奇怪,因为我 有 java 11:

$ java --version
openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu118.04.1)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu118.04.1, mixed mode, sharing)

我错过了什么?

您使用的是 IDE 吗?确保在您的 Gradle 设置中,Gradle 使用与您的项目相同的 java 版本,这可以在 Intellij https://www.jetbrains.com/help/idea/gradle-jvm-selection.html#jdk_existing_project

中轻松配置

Gradle 使用在您的 JAVA_HOME 环境变量中定义的 java 分布 - 它不会查看您路径中的 java 可执行文件。因此,请确保此变量指向有效的 JDK 11 路径。您可以通过 运行 gradle --version 验证它是否设置正确,例如

$ echo %JAVA_HOME%
C:\Work\JDKs\jdk-11.0.8+10


$ gradle --version

------------------------------------------------------------
Gradle 6.6
------------------------------------------------------------

Build time:   2020-08-10 22:06:19 UTC
Revision:     d119144684a0c301aea027b79857815659e431b9

Kotlin:       1.3.72
Groovy:       2.5.12
Ant:          Apache Ant(TM) version 1.10.8 compiled on May 10 2020
JVM:          11.0.8 (AdoptOpenJDK 11.0.8+10)
OS:           Windows 10 10.0 amd64

(注意上面的 JVM 部分。)

  • 事实证明 gradle 才是 的罪魁祸首。
  • 可能类似于 this post, I upgraded to gradle-6.7
  • 然后,调用 gradle-6.7 --version 没有任何 JAVA_HOME 改变 ,我得到:

------------------------------------------------------------
Gradle 6.7-rc-3
------------------------------------------------------------

Build time:   2020-09-30 19:16:51 UTC
Revision:     836e96a80625c9c48b612e662e3b13bd2e2f4c3b

Kotlin:       1.3.72
Groovy:       2.5.12
Ant:          Apache Ant(TM) version 1.10.8 compiled on May 10 2020
JVM:          11.0.8 (Ubuntu 11.0.8+10-post-Ubuntu-0ubuntu118.04.1)
OS:           Linux 5.4.0-48-generic amd64

这可能“证明”gradle确实是罪魁祸首

我在尝试通过 Intellij 使用 gradle 构建时遇到了这个问题。

在我的例子中,我在 Intellij 中安装并配置了两个 JDK 的 JDK1.8 和 JDK11。 对于 Gradle,它采用 JDK1.8 作为默认 JVM。 我使用以下步骤解决了这个问题:

  1. 打开 Intellij
  2. 转到首选项
  3. 转到“构建、执行、部署”->“构建工具”->Gradle
  4. 搜索“Gradle JVM”。将其更改为所需的 JVM
  5. 尝试重建应用程序

将我在 Jenkinsfile 中的代理标签更改为 openjdk11 为我解决了这个错误。

agent {
    label 'openjdk11'
}