【问题标题】:Error message "Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8"错误消息“Android Gradle 插件需要 Java 11 才能运行。您当前使用的是 Java 1.8”
【发布时间】:2021-07-02 22:30:19
【问题描述】:

我下载了最新的 Android Studio,我想运行 Android Jetpack Compose Project,但是运行时出现错误:

> 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`.

我已经下载了 Java 11 并在 gradle.properties 中添加了 Java 11。

org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-11.0.10.jdk/Contents/Home

JAVA_HOME 显示 Java 11,但是当我运行时,它不起作用 - /Library/Java/JavaVirtualMachines/jdk-11.0.10.jdk/Contents/Home

我该怎么办?

我的 Android Studio 版本

我的 Java 版本

java 11.0.10 2021-01-19 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.10+8-LTS-162)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.10+8-LTS-162, mixed mode)

我的 gradle-wrapper.properties

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

build.gradle 类路径

classpath "com.android.tools.build:gradle:7.0.0-alpha13"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.31"

文件build.gradle

plugins {
    id 'com.android.application'
    id 'kotlin-android'
}

android {
    compileSdk 30

    defaultConfig {
        applicationId "com.example.testandroid3"
        minSdk 21
        targetSdk 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary true
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
    }
    kotlinOptions {
        jvmTarget = "11"
        useIR = true
    }
    buildFeatures {
        compose true
    }
    composeOptions {
        kotlinCompilerExtensionVersion compose_version
        kotlinCompilerVersion '1.4.31'
    }
}

java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(11))
    }
}

dependencies {

    implementation 'androidx.core:core-ktx:1.3.2'
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.2.1'
    implementation "androidx.compose.ui:ui:$compose_version"
    implementation "androidx.compose.material:material:$compose_version"
    implementation "androidx.compose.ui:ui-tooling:$compose_version"
    implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.0'
    implementation 'androidx.activity:activity-compose:1.3.0-alpha02'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
    androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
}

【问题讨论】:

    标签: android android-studio gradle android-gradle-plugin


    【解决方案1】:

    确保您的 Gradle 使用正确的 JDK。 尝试在项目目录中运行./gradlew --version。输出应该是这样的:

    Gradle 7.0-rc-2
    ------------------------------------------------------------
    
    Build time:   2021-04-01 21:26:39 UTC
    Revision:     912a3368b654b71250dfc925a20d620393
    
    Kotlin:       1.4.31
    Groovy:       3.0.7
    Ant:          Apache Ant(TM) version 1.10.9 compiled on September 27 2020
    JVM:          11.0.10 (Ubuntu 11.0.10+9-Ubuntu-0ubuntu1.20.10)
    OS:           Linux 5.11.4-051104-generic amd64
    

    如果 JVM 指向 1.8 版,那么您应该在设置中更改它。您可以在 Preferences构建、执行、部署构建工具Gradle → *Gradle JDK 中找到它。

    【讨论】:

    • 我已经这样设置了,但是不行。
    • 谢谢,我重启了Android Studio,清除缓存,然后就可以了。
    • 我什至无法在您显示的路径中找到构建工具!
    • 将 Gradle JDK 更改为 11,清理项目,重建项目对我有用!另请检查您的 jvmTargetsourceCompatibilitytargetCompatibility 是否设置为 java 11 compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = '11' }
    • @ismailshah 您需要将其放入项目的build.gradle 文件中。但是,我相信这不会有帮助。确保您的系统 (OS) 具有 Java 11,因为仅更改 Gradle 设置对我没有帮助。在 MacOS 上,我使用 sdkman 安装和使用 jdk 11。安装后,我在 ./gradlew -verion 中看到用户 Java 的正确值,项目再次开始正常构建。
    【解决方案2】:

    对于 Android Studio Arctic Fox (4.2),在 Windows 10 Pro PC 上安装 2020.3.1 补丁 2:

    第一步

    第 2 步

    【讨论】:

    • 这是最新的android studio artic fox的解决方案
    • 当前 Mac 版本没有“Android”级别或扳手图标。您可以在“构建、执行、部署”下的首选项中找到 Gradle JDK。
    • @Oscar 这个解决方案在 macOS 的最新版本上对我有用。 android 级别只是来自react-native,它设置了这样的项目结构,因为它有androidios 等等。
    • 这工作:-)
    • 像你提到的那样改变了它。但是当我运行 ./gradlew --version 它仍然显示 JVM 1.8
    【解决方案3】:

    如果您在 Windows 10 上使用 Android Studio (Arctic Fox 2020.3.1)。

    这是修复构建失败错误的方法:

    Android Gradle 插件需要 Java 11 才能运行。您当前正在使用 Java 1.8

    1. 打开项目结构...

      (来自工具栏)

      (或从文件菜单)

    2. 点击Gradle设置链接

    3. Gradle JDK 下拉列表中选择正确的 Java JDK

    注意:如果您找不到正确的Java JDK,那么您首先需要download 并安装它...

    【讨论】:

    • 也修复了 mac :)
    • 太完美了……
    • 谢谢,在 mac 上也可以使用
    • 完美,适合我。
    • 为我在 mac 上工作。谢谢
    【解决方案4】:

    Android Studio Arctic Fox (4.2) 和 2020.3.1 补丁 3 - Mac

    您只需从偏好设置的 Gradle 设置中选择嵌入式 JDK 版本 11.0.10。

    【讨论】:

    • 我没有看到“Gradle JDK”选项
    【解决方案5】:

    你可以用这个简单的方法解决它。

    1. 转到https://www.oracle.com/java/technologies/javase-jdk16-downloads.html

    2. 下载系统的 JDK ZIP 文件。 (假设是 Windows)

    3. 解压到你PC主目录下任意高权限文件夹中

    4. 现在打开并转到位于 men File* → 项目结构的 Android Studio 项目结构。

    5. 并在此处粘贴您解压缩 JDK 版本的目录。如您所见,我现在是 JDK 16,并安装在该目录中,如图所示:

    【讨论】:

    • compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" useIR = true } >>>>>>>> 迁移到时是否需要在 gradle 文件中添加java 11 ??
    【解决方案6】:

    我在Arctic Fox build 的终端中启动gradlew ktlintFormat 时遇到此错误。

    1. 我打开 Project Structure(菜单 FileProject Structure)并选择了 Java 11,但即使重新启动也无济于事Android Studio 的。

    2. 然后我在 Settings 中更改了 Java 路径(请参阅接受的答案),但没有帮助。你应该设置它。

    3. 我尝试更改Windows系统变量并更改了JAVA_HOME

      A short way:以管理员权限运行cmd并写入:setx /M JAVA_HOME "C:\Program Files\Java\jdk-11.0.11",然后重启Android Studio)

      Win+X,按“系统”,输入“va”。

      我按下Edit按钮和“浏览目录...”,然后选择Java 11的JRE(或JDK)文件夹(没有bin)。然后OKOK(一如既往)。

    4. 我打开cmd(Windows 中的命令行)并输入:%JAVA_HOME%。它给我写了这个错误:

      'C:\Program' 未被识别为内部或外部命令, 可运行的程序或批处理文件。

      查看Setting the JAVA_HOME Variable in Windows,我发现我们应该将Program Files 替换为Progra~1(是的,这个DOS 技巧仍然有效)。所以,请再次替换 JAVA_HOME,如下图所示。

    5. 重启 Android Studio 或重置电脑。

    【讨论】:

    • 我在 MacOS 上遇到了同样的问题。将 Gradle JDK 设置为版本 11,构建现在可以工作了。
    • compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" useIR = true } >>>>>>>> 迁移到时是否需要在 gradle 文件中添加java 11 ??
    • @GyanSwaroopAwasthi,感谢您的通知。正如您所写,在一个项目中,我们使用JavaVersion.VERSION_11jvmTarget (JavaVersion.VERSION_11.toString())。我认为,在此更改之后,Android Studio 会要求升级到 Java 11。
    • 这对我很有帮助,谢谢!最后我刚刚下载了最后一台java机器并安装了它。笔记本电脑重启后版本变了!
    【解决方案7】:

    这就是我在 macOS 上修复它的方式。

    ./gradlew --version
    

    Go to Preference -> Build, Execution, Deployment -> Gradle
    

    将 Gradle JDK 更改为最新版本。

    在安装 Android Studio 之前,我只安装了一个 JDK(Microsoft build OpenJDK 17),不知什么原因,一个 JDK 1.8 已随 Android Studio 一起安装,并在 /Users/<username>/Library/Java/JavaVirtualMachines/corretto-1.8.0_322 处设置为 gradle 默认值

    【讨论】:

    • 很好的答案谢谢:)
    • 谢谢。在我的 M1 mac 上选择 Embedded JDK version 11.0.11 对我有用。
    【解决方案8】:

    我在更新 Android Studio 中需要 Java 11 的依赖项之一时收到此错误。您只需按照以下步骤操作即可。

    1. 下载 Java 11。对于 Mac,下载 .dmg 文件,对于 Windows,下载 ZIP 文件。链接:Download Java 11

    2. 在 Android Studio 中选择选项

      按照步骤并选择您新保存的 Java SDK

      按照步骤并选择新保存的 Java SDK。

      (按照步骤并选择新保存的 Java SDK。)

    【讨论】:

      【解决方案9】:

      如果您当前使用的是 Android Studio Arctic Fox (4.2):

      • 您可以手动设置 Gradle JDK(菜单 PreferencesBuild ToolsGradleGradle JDK (使用或下载 JDK 11))
      • 恢复默认设置,不要在所有项目中做之前的提示(菜单文件管理IDE设置恢复默认设置 )

      【讨论】:

      • compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" useIR = true } >>>>>>>> 迁移到时是否需要在 gradle 文件中添加java 11 ??
      【解决方案10】:

      我只是遇到了同样的问题-

      Android Gradle 插件需要 Java 11 才能运行

      通过将Gradle JDK“JDK 1.9”的值替换为“Android Studio SDk default JD 11.0.11”来解决菜单设置构建、执行、部署构建工具Gradle

      【讨论】:

        【解决方案11】:

        新的 Gradle 版本需要 Java 11。您需要下载 Java 11 并更新到 Gradle。

        首先您需要检查您当前的 JDK 版本。 './gradlew --version'。在您的项目终端中使用此注释来了解当前使用的 JDK 版本。你会得到下图:

        如果 JVM 指向 1.8 版,那么您应该在设置中更改它。

        对于Ubuntu 和 Windows:菜单 文件设置构建、执行、部署构建工具GradleGradle JDK。请查看下图:

        对于 Mac:首选项构建执行、部署构建工具Gradle → Gradle JDK.

        它对我来说非常有效。

        【讨论】:

        • 为什么要复制粘贴现有的答案?
        • @Houman 我不复制现有答案。如果你觉得,对不起。
        • @ShohelRana 接受的答案来自 4 月,您的答案来自 8 月。你在这里所说的,已经被他的回答所涵盖:stackoverflow.com/a/67002271/92153。你不觉得吗?
        • compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" useIR = true } >>>>>>>> 迁移到时是否需要在 gradle 文件中添加java 11 ??
        • @GyanSwaroopAwasthi use can use compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } 我在以前的项目中使用过。它为我工作
        【解决方案12】:

        我得出结论,Gradle 调用系统上安装的 Java 版本,而不管 Android Studio 设置如何。

        在 macOS 上,使用以下命令查看系统中已安装的 Java 版本列表:

        /usr/libexec/java_home -V
        

        如果其中没有 Java 11 或更高版本,您将收到与问题作者类似的错误。

        解决方案是安装 Java 11 或更高版本。

        第二种解决方案是在文件夹~/Library/Java/JavaVirtualMachines/ 中使用以下命令将符号链接指向 Android Studio 中嵌入的 JRE:

        ln -s "/Applications/Android Studio.app/Contents/jre" "~/Library/Java/JavaVirtualMachines/Android Studio Default JRE"
        

        另外,您可以将此行添加到~/.zshenv

        export JAVA_HOME=/usr/libexec/java_home
        

        如果需要,您可以获取不同 Java 版本的安装路径:

        /usr/libexec/java_home -v 11
        

        /usr/libexec/java_home -v 1.8
        

        【讨论】:

        • 以上其他答案让您检查Android Studio中的java版本。这表明我已经安装了 java 11。按照您的步骤使用/usr/libexec/java_home -V 进行检查对我有帮助。
        • 谢谢。以上均无效
        【解决方案13】:

        在 Mac 上,只有 将 JAVA_HOME 设置为 JDK 11 嵌入到 Android Studio 有帮助。

        我是在命令行中用这个命令完成的:

        export JAVA_HOME=ENTER_PATH_TO_JDK_HERE
        

        PATH_TO_JDK 可能类似于 /Users/userName/Library/Application\ Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/203.7583922/Android\ Studio.app/Contents/jre/Contents/Home

        【讨论】:

        • 在我的 Mac 上将 Java 更新到 11 确实有帮助。从终端调用时,Gradle 似乎使用系统 Java 版本(即使在 Android Studio 中的终端中)。
        【解决方案14】:

        这里的所有解决方案都对 Java 11 有帮助。但是如果您不想升级到 Java 11,那么您应该将 ADP 降级到 4.X,如下所示:

        【讨论】:

          【解决方案15】:

          我在第一次尝试运行benchmarking samples 时遇到了类似的问题。

          运行示例的指令是执行

          ./gradlew macrobenchmark:cC

          在 IDE 终端中,但在我的情况下,这会导致相同的错误。

          我已经尝试了上面 M Tomczyński 接受的答案,但这对我不起作用。我相信这是由于我对JAVA_HOME 的现有配置(可以找到here)。

          这也意味着选项 2(更改我的 JAVA_HOME 配置)不是一个选项。

          虽然对我有用的更改是上述建议中的选项 3。我从上面的答案中检查了 Java 11 的路径并将其添加到 gradle.properties,然后根据 IDE 提示同步 gradle,并成功重新运行了 macrobenchamark gradle 命令。

          org.gradle.java.home=/Applications/Android Studio Preview.app/Contents/jre/Contents/Home

          【讨论】:

            【解决方案16】:

            在 Android Studio Arctic Fox (4.2) 中将 Gradle JDK 更改为 11 对我有用:

            第 1 步:

            导航到:菜单文件设置构建、执行、部署构建工具Gradle

            第 2 步:

            将 Gradle JDK 更改为 11,位于 Gradle 项目下方。

            第 3 步:

            应用,然后重建项目

            【讨论】:

            • compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" useIR = true } >>>>>>>> 迁移到时是否需要在 gradle 文件中添加java 11 ??
            【解决方案17】:

            我的问题是我使用的是 Arctic Fox (4.2) 之前的 Android Studio 版本。而且好像只有北极狐支持JDK 11。

            【讨论】:

              【解决方案18】:

              对于 MacOS 用户

              在MacOS中捆绑的JDK是1.8,但现在我们需要11。让gradle使用AndroidStudio的JDK来构建项目:

              进入文件<PROJECT_ROOT>/gradle.properties添加行:

              org.gradle.java.home=/Users/.../Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/.../Android Studio.app/Contents/jre/Contents/Home
              

              【讨论】:

              • Android Studio 内置的 JVM 出了什么问题?org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/Contents/Home
              【解决方案19】:

              如果您不想使用 JDK 11,但仍想使用 JDK 1.8,您可以按以下方式还原 android 插件。

              plugins {
                  id 'com.android.application' version '4.2.0' apply false
                  id 'com.android.library' version '4.2.0' apply false
              }
              

              【讨论】:

                【解决方案20】:

                什么对我有用:

                1. 正在删除我的用户文件夹中的 JDK 1.8 文件夹。
                2. 重新启动 Android Studio。
                3. Android Studio 在屏幕顶部下拉了一个栏,询问我是否要更改要使用的 JDK 或重新下载 1.8。
                4. 我选择了 JDK 16 并且一切正常!

                【讨论】:

                • (JDK当前最新版本为17.0.1。)
                【解决方案21】:

                对我来说,只需确保我使用的是位于 [Android Studio 安装路径]/jre 中的 Gradle JDK。

                试试看。它也可能对你有用。

                【讨论】:

                  【解决方案22】:

                  我看到这个是因为在我的 Bitbucket 服务器上设置了管道,我需要从使用 openjdk-8 打包的 docker-android-sdk/android-28 图像构建。

                  我在我的 bitbucket-pipelines.yml 文件中添加了以下行以在运行 Gradle 构建之前安装 openjdk-11:

                  - apt-get install -y openjdk-11-jdk
                  

                  【讨论】:

                    【解决方案23】:

                    对于不知道如何更改 JDK 版本的任何人,如果您使用的是 Mac,请在终端中使用此命令:

                    sudo rm -rf /Library/Java/*
                    

                    这将从系统中删除所有 JDK。然后,只需下载所需的 JDK 版本就可以了up

                    【讨论】:

                      【解决方案24】:

                      以上方法均不适用于 Android Studio Artic Fox | 2020.3.1 补丁 3。

                      仅将 org.gradle.java.home=<Path-to-JDK-v11> 添加到 gradle.properties 对我来说有效。

                      如果您使用的是 linux,只需添加 org.gradle.java.home=/opt/android-studio/jre

                      【讨论】:

                        【解决方案25】:

                        请注意,如果您在 Github Actions Pipeline 上遇到此错误,这是一个解决方案。

                        如果您在项目中使用 Java 11,但构建 App 的 Github Action 设置为使用 Java 1.8,则会出现此错误。

                        要修复它,请执行以下操作:

                        Github 中的旧步骤

                              - name: set up JDK 1.8
                                uses: actions/setup-java@v1
                                with:
                                  java-version: 1.8
                        

                        新步骤

                              - name: set up JDK 11
                                uses: actions/setup-java@v1
                                with:
                                  java-version: 11
                        

                        【讨论】:

                        • 在项目的哪里添加这个?
                        • 如果你在 Github Actions Pipeline 上得到这个,你可以在你的项目的 .github/workflows 文件夹下的 Action .yml 文件中更改步骤。
                        • 虽然这并没有回答OP的问题,但是和主题相关,很有帮助!谢谢!
                        【解决方案26】:

                        如果您使用的是 MS App Center,则在您的 android 项目中使用 JAVA 11 时可能会遇到同样的问题。如果您正在寻找 MS App Center 问题的解决方案,这可能会对您有所帮助!

                        • 转到https://appcenter.ms/users/user1/apps/yourapp/build/branches
                        • 点击设置图标进入Build configuration
                        • 向下滚动到Environment 并打开。
                        • JAVA_HOME 设置为$(JAVA_HOME_11_X64)

                        【讨论】:

                          猜你喜欢
                          • 2021-10-07
                          • 2022-01-21
                          • 1970-01-01
                          • 2022-06-17
                          • 2021-10-14
                          • 2021-07-21
                          • 2022-08-08
                          • 1970-01-01
                          • 2022-06-17
                          相关资源
                          最近更新 更多