Android Studio错误“Android Gradle插件需要Java11才能运行。您当前使用的是Java1.8”

我下载了最新的Android Studio,我想运行Android Jetpack ComposeProject,但是当我运行它时,我遇到了错误:

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

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

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

JAVA_HOME显示Java11,但是当我运行时,它不起作用- /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"
}
448294 次浏览

确保您的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中找到它。

在此处输入图片描述

我第一次尝试运行标杆样本时遇到了类似的问题。

运行示例的指令是执行

./gradlew macrobenchmark:cC

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

我已经尝试了上面M Tomczyski的公认答案,但这对我不起作用。我相信这是由于我现有的JAVA_HOME配置(可以找到这里)。

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

不过,对我有用的更改是上面建议中的选项3。我检查了上面答案中Java11的路径,并将其添加到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 File*→项目结构的Android工作室项目结构。

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

    在此处输入图片描述

对我来说,这就像确保我使用位于[Android Studio安装路径]/jre中的Gradle JDK一样简单。

试试看。它也可能为你工作。

当我在北极狐建造的终端中启动gradlew ktlintFormat时,我遇到了这个错误。

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

    在此输入图片描述

  2. 然后我改变了设置中的Java路径(见接受的答案),但它没有帮助。你应该设置它。

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

    很短的路:使用管理权限运行cmd并写入:setx /M JAVA_HOME "C:\Program Files\Java\jdk-11.0.11",然后重新启动Android Studio)

    +X,按“System”,输入“va”。

    在此输入图片描述

    在此输入图片描述

    我按下编辑按钮和“浏览目录…”,然后选择Java11的JRE(或JDK)文件夹(没有bin)。然后好的好的(一如既往)。

    在此输入图片描述

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

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

    查看在Windows中设置JAVA_HOME变量,我发现我们应该将Program Files替换为Progra~1(是的,这个DOS技巧仍然有效)。所以,再次替换JAVA_HOME,如下图所示(C:\Progra~1\Android\Androi~1\jre)。

    在此输入图片描述

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

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

我在命令行中使用此命令:

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中需要Java11的依赖项之一时,我收到了这个错误。您只需要按照以下步骤操作。

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

  2. 在Android Studio中选择选项

    在此处输入图片描述

    按照步骤操作并选择新保存的JavaSDK

    在此处输入图片描述

    按照步骤操作并选择新保存的JavaSDK。

    在此处输入图片描述

    (按照步骤操作,选择新保存的JavaSDK。

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

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

JDK版本

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

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

Windows

对于Mac:偏好构建执行、部署构建工具GradleGradle JDK

它对我来说工作得很好。

我的结论是,无论Android Studio设置如何,Gradle都会调用系统上安装的Java版本。

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

/usr/libexec/java_home -V

如果其中没有Java11或更高,你会得到一个像问题作者一样的错误。

解决方案是安装Java11或更高。

第二种解决方案是使用以下命令在文件夹~/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北极狐(4.2):

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

我的问题是我使用的是北极狐(4.2)之前的Android Studio版本。似乎只有北极狐支持JDK 11。

对于Windows 10 Pro PC上具有2020.3.1补丁2的Android Studio北极福克斯(4.2):

步骤1

在此处输入图片描述

步骤2

在此处输入图片描述

在Android Studio北极狐(4.2)中将Gradle JDK更改为11对我有用:

步骤1:

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

步骤2:

将Gradle JDK更改为11,在Gradle Projects下方。

步骤3:

申请重建项目

我也遇到了同样的问题

Android Gradle插件需要Java11才能运行

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

带有2020.3.1补丁3的Android Studio北极福克斯(4.2)-Mac

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

在此处输入图片描述

我看到这个是因为在我的比特桶服务器上设置了管道,我需要从与openjdk-8打包的docker-android-sdk/android-28下载文档下载文档映像构建。

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

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

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

sudo rm -rf /Library/Java/*

这将从系统中删除所有JDK。然后,只需下载所需的JDK版本,你就是向上

如果您在Windows 10上使用Android Studio(北极福克斯2020.3.1)。

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

Android Gradle插件需要Java11才能运行 Java1.8

Android Gradle插件需要Java11才能运行。您当前使用Java1.8

  1. 打开项目结构…

    (从工具栏)
    工具栏上的项目结构

    (或从文件菜单)
    项目结构…在文件菜单上

  2. 点击Gradle设置链接

    Gradle设置链接

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

    在此处输入图片描述

注意:如果您找不到正确的JavaJDK,那么您首先需要下载地址并安装它…

Android Studio 4.2(北极狐),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

⚠️注意:如果您在GitHub Actions Pipeline上收到此错误,这是一个解决方案

如果您在项目中使用Java11,但构建应用程序的GitHub Action Pipeline设置为使用Java1.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

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

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

在此输入图片描述

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

./gradlew --version

在此输入图片描述

转到偏好构建、执行、部署Gradle

在此输入图片描述

将Gradle JDK更改为您的最新版本。

在此输入图片描述

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

这里的所有解决方案都对Java11很有帮助。但是,如果你不想升级到Java11,那么你应该将Android Gradle插件(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配置为Java11,设置首选项中的Gradle JDK无法解决。我猜从终端运行Gradle和从IDE运行Gradle不是同一个进程,它们使用不同的JDK位置。

您可以这样做(菜单文件构建选项):

菜单文件->构建选项

在windows我得到这个错误时,升级ReactNative v0.67到0.68从目录的CMD没有安装更新OpenJDK 11.

首先安装:

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

然后我运行这个:

choco install -y nodejs-lts openjdk11 // Without nodejs-lts I have already installed Node.js

我通过将其添加到gradle.properties文件来解决它:

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

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

Windows的示例路径:

org.gradle.java.home=C\:\\Program Files\\Java\\jdk-13.0.2
  • 对于最新版本,这适用于我的Windows机器

  • 菜单文件项目结构

    项目

  • 从您安装的机器中选择JDK 11

  • 单击申请好的

  • 在这些更改后重新启动您的Android Studio

  • 现在你可以走了

在此输入图片描述

macOSM1上,我通过以下步骤解决了它。

  1. Visual Studio代码中打开文件

  2. 添加这一行:

    export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/Contents/Home"
    
  3. 保存文件

  4. 使用修改后的文件重新加载终端

    source ~/.zshrc
    
  5. 测试更改是否已通过运行加载

    echo $JAVA_HOME
    
  6. 确认显示的位置正确。

  7. 验证Gradle正在显示正确的Java11版本

    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

它成功了。

对于带有VS Code的Flutter项目

将其添加到文件gradle.properties

org.gradle.java.home=<path to JDK 11>

示例:

C:\\Program Files\\Java\\jdk-11.0.15

gradle.properties

我再次下载了11个JDK,它可以工作。这节省了您的时间,因为您不必清除缓存、构建和重建您的项目。

下载新的JDK(再次选择版本11或更高版本)

我正在开发一个Flutter应用程序,它没有在我的手机上运行,说明Android Gradle插件需要Java11。

我的Android Studio版本非常旧。我没有看到屏幕截图中显示的任何选项。我在系统环境变量中设置JAVA_HOME后更新了Android Studio。它自动选择Java11。

如果您只是在首选项→构建、执行、部署→构建工具→Gradle中将JDK版本从1.8修改为11,您仍然可能会收到该错误。

通过运行命令./gradlew --version,您可以看到JDK版本仍然是1.8。因此,我们需要将~/.bash_profile中的JAVA_HOME值更改为您的真实JDK-11位置。这是修改后的差异:

- export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home
+ export JAVA_HOME=/Users/xx/Library/Java/JavaVirtualMachines/corretto-11.0.14.1/Contents/Home

然后,重新打开您的Android Studio,一切都会正常工作。

注意:如果您在Azure运营模式管道上收到此错误,这是一个解决方案

如果在项目中使用Java11,但构建应用程序的Azure运营模式管道设置为使用Java1.8,则会出现此错误。

要修复它,请添加以下内容(对于Windows池):

    - task: JavaToolInstaller@0
inputs:
versionSpec: '11'
jdkArchitectureOption: 'x64'
jdkSourceOption: 'PreInstalled'

只需在gradle.properties中添加下面的属性

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

(这适用于MacOS。根据操作系统给出路径)。此修复适用于任何Android Studio版本

首选项->构建,执行,部署->构建工具->Gradle

在android Studio我刚刚做了这个 首选项->构建、执行、部署->构建工具->Gradle 简单的peasy

将JavaHome路径添加到wrapper.properties

从Android Studio首选项更改Gralde JDK对我不起作用。

但是我能够通过在gradle-wrapper.properties文件中添加org.gradle.java.home路径来纠正JDK。

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip


# I had to add this line (macos)
org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/Contents/Home

我通过File->Project Structure->SDKs->选择要使用的JDK->JDK home path找到了JAVA_HOME路径。

输入图片描述

之后,我能够再次运行gradlew命令。

我的环境:

    - Android Studio 4.1.1
- Java 1.8

不需要切换Java11或更高。可以按照我的步骤如下

通过

在依赖项下更改android/build.gradle文件的gradle类路径

classpath 'com.android.tools.build:gradle:7.1.2'

to

classpath 'com.android.tools.build:gradle:4.1.0'

输入图片描述