Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.

〇、出现问题

今天把Android Studio升级到最新版本,并更新最新的SDK:

创建新项目后出现,构建时直接出现如下错误:

An exception occurred applying plugin request [id: 'com.android.application']
> Failed to apply plugin 'com.android.internal.application'.
   > Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
     You can try some of the following options:
       - changing the IDE settings.
       - changing the JAVA_HOME environment variable.
       - changing `org.gradle.java.home` in `gradle.properties`.

以上描述是说Gradle插件需要Java 11 ,而我现在使用的是Java 8。

看了下最新项目的Gradle版本已经是7.0.2:

distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip

Gradle插件版本是7.0.3:

classpath "com.android.tools.build:gradle:7.0.3"

方法一:降低Gradle版本

出现这个问题,我的第一反应是:既然Gradle 7.X报错,那就降低Gradle版本。找到不久之前创建的可以成功编译的项目(https://github.com/beita08/Demo210712Git),对比两个新项目的不同之处,进行修改。

1、Gradle版本改为 6.7.1:

#distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip

2、Gradle插件版本改为 4.2.2:

//classpath "com.android.tools.build:gradle:7.0.3"
classpath "com.android.tools.build:gradle:4.2.2"

3、修改settings.gradle文件:

根据新的提示信息对比新旧项目的settings.gradle文件,删除settings.gradle文件中的dependencyResolutionManagement方法:

/*dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
    }
}*/
rootProject.name = "Demo211204"
include ':app'

4、修改项目下的build.gradle文件:

在项目下的 build.gradle文件中添加 allprojects{} 闭包,最后 build.gradle文件应该是这样:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        //classpath "com.android.tools.build:gradle:7.0.3"
        classpath "com.android.tools.build:gradle:4.2.2"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

具体修改我放在这个项目里了:GitHub - beita08/Demo211204Gradle7.0: 新项目Gradle升级至7.0.2,Gradle插件升级至7.0.3后,出现的问题处理。

以上4步修改完成后,再次构建项目即可成功。

方法二:修改IDE配置

第一种方法虽然可以临时解决问题,但是随着以后版本升级这必然不是长久之策,详细看最初的报错信息,我们还可以通过修改IDE配置中的Gradle JDK版本来解决此问题。

依次点开 File | Settings | Build, Execution, Deployment | Build Tools | Gradle,修改Gradle JDK 为 JDK(11)即可。

以上修改完成后,可以查看 .idea/gradle.xml 文件里的gradleJvm配置已经由1.8修改为11了:

需要说明的是:

  1. 最新版的Android Studio默认就包含JDK 11(在Android Studio 安装目录的jre目录下),所以无需我们进行安装。
  2. 此处配置的Gradle JDK为 Gradle 依赖的 Java 版本,并非 Android Studio 项目依赖的Java版本。

方法三:升级本地JDK版本

Java 8 虽然是一个经典版本,但是 Java 17 LTS 已于2021年9月发布了,Java 11 也已经算不上什么新版本了,安装更新的Java版本也慢慢变得势在必行了。另外,升级本地JDK后记得修改环境变量。

具体的升级方法见:Java 8(JDK 1.8)升级更新至 Java 11(JDK 11)/ Java 17(JDK 17)LTS_beita08的博客-CSDN博客

JDK升级完成后,在File | Settings | Build, Execution, Deployment | Build Tools | Gradle 中下拉 Gradle JDK 选项,即可看见检测到新的JDK:

 选择JDK 17 后应用确定,再次构建项目即可成功。

个人也最推荐第三种方法,问题解决的更为彻底。

  • 18
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值