【问题标题】:gradle Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'gradle 无法定位平台:'Java SE 11' 使用工具链:'JDK 8 (1.8)'
【发布时间】:2021-01-17 01:37:01
【问题描述】:
  • 我正在根据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)

我错过了什么?

【问题讨论】:

    标签: java gradle ghidra


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      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 部分。)

      【讨论】:

      • 好吧,不是,它说:JVM: 1.8.0_265 (Private Build 25.265-b01) 但我现在可以更改它吗?还是我应该卸载 gradle 并重新安装??
      • 这与 Gradle 无关,而与您的 JDK 安装有关。您必须确保您的 JAVA_HOME 环境变量设置正确。我看到您正在使用 Ubunto,它会根据您安装 Java 的方式为您管理。运行echo $JAVA_HOME 以查看它的设置。如果错误,请尝试运行update-java-alternatives -l 列出Java 安装,并尝试运行sudo update-java-alternatives -s [NAME] 将其设置为特定版本。如果这不起作用,请尝试在/etc/environment~/.bashrc~/.profile 或类似位置查找变量。
      • 在任何提到的地方都没有JAVA_HOME ...我完全不知道gradle如何找到另一个java版本,当我打电话给update-java-alternatives -l时只有一(11)个java版本
      【解决方案3】:

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

      【讨论】:

      • 不,我没有使用 IDE。我所做的一切都来自终端
      • 你也可以在你的 gradle.properties 或 build.gradle 文件中定义 java 版本(见stackoverflow.com/a/21212790/12089702
      【解决方案4】:
      • 事实证明,gradle 毕竟是罪魁祸首。
      • 可能和this post差不多,我升级为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 确实是罪魁祸首

      【讨论】:

      • 我认为你是对的,毕竟这是 Gradle 问题。但是从您提供的链接来看,实际上应该归咎于 Ubuntu。据我所知,Ubuntu 有一个自定义的 Gradle 发行版,他们将启动脚本更改为重新定义 JAVA_HOME。 (我假设你是通过包管理器安装的。)当你从官方服务器下载 6.7-rc-3 时,你得到了一个没有这种奇怪行为的 vanilla 发行版。我想知道为什么 Ubuntu 的人会这样做......:/
      【解决方案5】:

      将我在Jenkinsfile 中的代理标签更改为openjdk11 为我修复了此错误。

      agent {
          label 'openjdk11'
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-15
        • 2022-12-10
        • 2021-03-27
        • 2019-03-30
        • 1970-01-01
        • 1970-01-01
        • 2023-02-20
        相关资源
        最近更新 更多