gradle 无法定位平台:'Java SE 11' 使用工具链:'JDK 8 (1.8)'
gradle Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'
- 我正在根据 installation guide 构建 ghidra。
一切顺利直到我得到 here.
- 调用
$ gradle buildGhidra
后出现以下错误:
> 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。
我使用以下步骤解决了这个问题:
- 打开 Intellij
- 转到首选项
- 转到“构建、执行、部署”->“构建工具”->Gradle
- 搜索“Gradle JVM”。将其更改为所需的 JVM
- 尝试重建应用程序
将我在 Jenkinsfile
中的代理标签更改为 openjdk11
为我解决了这个错误。
agent {
label 'openjdk11'
}
- 我正在根据 installation guide 构建 ghidra。 一切顺利直到我得到 here.
- 调用
$ gradle buildGhidra
后出现以下错误:
> 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。 我使用以下步骤解决了这个问题:
- 打开 Intellij
- 转到首选项
- 转到“构建、执行、部署”->“构建工具”->Gradle
- 搜索“Gradle JVM”。将其更改为所需的 JVM
- 尝试重建应用程序
将我在 Jenkinsfile
中的代理标签更改为 openjdk11
为我解决了这个错误。
agent {
label 'openjdk11'
}