Android 工作室错误 "Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8"

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

我下载了最新的 Android Studio,我想 运行 Android Jetpack Compose 项目,但是当我 运行 它时,我得到了错误:

> 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"
}

确保您的 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,那么您应该在设置中更改它。您可以在 首选项构建、执行、部署构建工具Gradle → *Gradle JDK.

我 运行 第一次尝试 运行 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

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

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

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

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

  4. 现在打开并转到位于 men 文件中的 Android 工作室项目结构* → 项目结构.

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

对我来说,这很简单,只要确保我使用的是位于 [Android Studio 安装路径]/jre[=15 中的 Gradle JDK =].

试试吧。它可能也适合你。

我在 Arctic Fox build 的终端启动 gradlew ktlintFormat 时出现此错误。

  1. 我打开了项目结构(菜单文件项目结构 ) 并选择 Java 11,但即使在 Android Studio 重新启动后也没有帮助。

  2. 然后我在设置中更改了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”。

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

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

    'C:\Program' is not recognized as an internal or external command, operable program or batch file.

    查看 Setting the JAVA_HOME Variable in Windows, I found that we should replace Program Files with Progra~1 (yes, this DOS 技巧仍然有效)。因此,如下图所示再次替换 JAVA_HOME。

  5. 重新启动 Android Studio 或重置计算机。

在 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

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

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

  2. Select Android 工作室的选项

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

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

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

新的Gradle版本需要Java11。您需要下载Java11并更新到Gradle.

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

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

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

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

它非常适合我。

我得出结论,Gradle 调用了系统上安装的 Java 版本,与 Android Studio 设置无关。

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

/usr/libexec/java_home -V

如果其中没有Java11以上的,就会和题主一样报错

解决方法是安装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

对我有用的:

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

如果您目前正在使用 Android Studio Arctic Fox (4.2):

  • 您可以手动设置 Gradle JDK(菜单 首选项构建工具GradleGradleJDK(使用或下载JDK11))
  • 恢复默认设置,不要在所有项目中做之前的提示(菜单文件管理IDE设置恢复默认设置)

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

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

步骤 1

第 2 步

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

第 1 步:

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

第 2 步:

将 Gradle JDK 更改为 Gradle 项目下方的 11。

第 3 步:

应用,然后重建项目!

我遇到了同样的问题 -

Android Gradle plugin requires Java 11 to run

通过将Gradle的值替换为JDK,"JDK1.9"解决] 通过 "Android Studio SDK default JD 11.0.11" 在菜单 SettingsBuild, Execution, Deployment 构建工具Gradle.

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

您只需在首选项的 Gradle 设置中选择嵌入式 JDK 版本 11.0.10。

我看到这个是因为在我的 Bitbucket server with pipeline set up, I needed to build from the docker-android-sdk/android-28 图像上,它是用 openjdk-8 打包的。

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

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

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

sudo rm -rf /Library/Java/*

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

如果您在 Windows 10.

上使用 Android Studio (Arctic Fox 2020.3.1)

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

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

  1. 打开项目结构...

    (来自工具栏)

    (或从文件菜单)

  2. 点击Gradle设置link

  3. Select 来自 Gradle JDK 的正确 Java JDK -下榜单

注意:如果找不到正确的 Java JDK, then you'll first need to download 并安装它...

None 以上在 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

对于 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

⚠️ Note: this is a solution if you are getting this error on the Github Actions Pipeline

如果您在项目中使用 Java11,但 Github 操作管道[=构建应用程序的 25=] 设置为使用 Java 1.8,您将收到此错误。

要修复它,请替换以下内容:

      - 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

如果您使用的是 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)

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

./gradlew --version

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

将 Gradle JDK 更改为最新版本。

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

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

如果您不想使用 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
}

如果你 运行 从 Android Studio 的终端进入这个问题,你应该在你的环境中配置 JAVA_HOME 进入 java 11,设置 gradle jdk 在Perferences中解决不了。我猜 运行ning 来自终端的 gradle 和来自 ide 的 运行ning gradle 不是同一个过程,它们使用不同的 jdk 位置.

最新答案:你可以这样做

在 Windows 中,在没有安装更新 openjdk 11 的情况下从目录的 CMD 将 React native v0.67 升级到 0.68 时出现此错误。 首先我安装

choco source add -n chocolatey -s 'https://chocolatey.org/api/v2/'

然后我运行这个

choco install -y nodejs-lts openjdk11 //without nodejs-lts i have already install node

希望它对某人有用

我通过将此添加到 gradle.properties 文件解决了这个问题:

org.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64

但是您的 Java 11 可能位于不同的目录中。

如果 JVM 指向版本 1.8,那么您可以从 android 工作室设置中更改它。 可以点击File-->Setting-->Build, Execution, Deployment → Build Tools → Gradle → *Gradle JDK。然后应用然后单击确定

如果你想要视频解决方案,请看野兔 Video

  • 对于最新版本,这适用于我的 windows 机器

  • 文件 -> 项目结构

  • 选择JDk 11 从你安装的机器

  • 单击 'Apply' 和 'Ok'。

  • 在这些更改后重新启动您的 android 工作室

  • 现在,你可以开始了

MacOS M1 我按照以下步骤解决了。

  1. 在 vsCode
  2. 中打开 ~/.zshrc
  3. 添加了这一行
export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/Contents/Home"
  1. 保存文件
  2. 用 运行
  3. 修改后的文件重新加载终端
source ~/.zshrc
  1. 测试 运行
  2. 是否加载了更改
echo $JAVA_HOME
  1. 已确认显示的位置正确。
  2. 通过 运行
  3. 验证 gradle 显示正确的 JAVA 11 版本
cd android
./gradlew --version

这是结果

------------------------------------------------------------
Gradle 7.3.3
------------------------------------------------------------

Build time:   2021-12-22 12:37:54 UTC
Revision:     6f556c80f945dc54b50e0be633da6c62dbe8dc71

Kotlin:       1.5.31
Groovy:       3.0.9
Ant:          Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM:          11.0.12 (JetBrains s.r.o. 11.0.12+0-b1504.28-7817840)
OS:           Mac OS X 12.2.1 aarch64

试图通过 运行

再次构建它
yarn android

并且成功了。