ChatGPT解决这个技术问题 Extra ChatGPT

Android Studio 错误“Android Gradle 插件需要 Java 11 才能运行。您当前使用的是 Java 1.8”

我下载了最新的 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 版本

https://i.stack.imgur.com/VLFU2.png

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

P
Peter Mortensen

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

https://i.stack.imgur.com/eumlW.png


我已经这样设置了,但它不起作用。
谢谢,我重新启动了 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 的正确值,并且项目再次开始正常构建。
P
Peter Mortensen

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

步骤1

https://i.stack.imgur.com/Iw94r.png

第2步

https://i.stack.imgur.com/amBZ7.png


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

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

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

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

https://i.stack.imgur.com/g4QHJ.png

打开项目结构...(从工具栏)(或从文件菜单)单击 Gradle Settings 链接 从 Gradle JDK 下拉列表中选择正确的 Java JDK

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


还修复了mac :)
那很完美...
谢谢大佬,也可以在mac上使用
完美,对我有用。
为我在mac上工作。谢谢
P
Peter Mortensen

Android Studio 北极狐 (4.2) 与 2020.3.1 补丁 3 - Mac

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

https://i.stack.imgur.com/IIhKe.png


我没有看到“Gradle JDK”选项
M
MasterWil

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

./gradlew --version

https://i.stack.imgur.com/idHQW.png

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

https://i.stack.imgur.com/3pIm5.png

将 Gradle JDK 更改为最新版本。

https://i.stack.imgur.com/cNuhj.png

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


谢谢你。在我的 M1 mac 上选择 Embedded JDK version 11.0.11 对我有用。
Go to Preference -> Build, Execution, Deployment -> Build Tools -> Gradle
这对我不起作用,您还有其他方法可以解决此问题吗? @MaserWil
@vainu 这就是我为解决问题所做的一切。抱歉,如果这无济于事。
我没有看到“Gradle JDK”选项
P
Peter Mortensen

您可以通过这种简单的方式解决它。

转到 https://www.oracle.com/java/technologies/javase-jdk16-downloads.html 下载系统的 JDK ZIP 文件。 (假设是 Windows)将其解压缩到 PC 主目录下具有高权限的任何文件夹中现在打开并转到位于 men File* → 项目结构的 Android Studio 项目结构。并在此处粘贴您解压缩 JDK 版本的目录。如您所见,我现在是 JDK 16,并安装在该目录中,如图所示:


compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" useIR = true } >>>>>>>> 迁移到 java 11 时是否需要在 gradle 文件中添加?
P
Peter Mortensen

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

我打开了项目结构(菜单文件→项目结构)并选择了 Java 11,但即使重新启动 Android Studio 也没有帮助。然后我更改了设置中的 Java 路径(请参阅接受的答案),但没有帮助。你应该设置它。我试图更改 Windows 系统变量并更改了 JAVA_HOME。 (简单的方法:以管理员权限运行cmd并写入:setx /M JAVA_HOME "C:\Program Files\Java\jdk-11.0.11",然后重启Android Studio)按Win+X,按"System",然后输入“va”。我按下编辑按钮和“浏览目录...”,然后选择 Java 11 的 JRE(或 JDK)文件夹(不带 bin)。然后确定,然后确定(一如既往)。我打开 cmd(Windows 中的命令行)并输入:%JAVA_HOME%。它给我写了这个错误:'C:\Program' 不被识别为内部或外部命令、可运行程序或批处理文件。查看在 Windows 中设置 JAVA_HOME 变量,我发现我们应该用 Progra~1 替换 Program Files(是的,这个 DOS 技巧仍然有效)。因此,请再次替换 JAVA_HOME,如下图所示。重启 Android Studio 或重置电脑。


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

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

下载 Java 11。对于 Mac,下载 .dmg 文件,对于 Windows,下载 ZIP 文件。链接:Download Java 11 Select options at Android studio 按照步骤选择新保存的 Java SDK 按照步骤选择新保存的 Java SDK。 (按照步骤并选择新保存的 Java SDK。)


M
Muhaiminur Rahman

最新答案:你可以这样做

https://i.stack.imgur.com/MnN4Z.png


P
Peter Mortensen

我得出的结论是 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 对我有帮助。
谢谢。以上都不起作用
P
Peter Mortensen

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

您可以手动设置 Gradle JDK(菜单 Preferences → Build Tools → Gradle → Gradle JDK(使用或下载 JDK 11))

恢复默认设置,不要在所有项目中做之前的提示(菜单文件→管理IDE设置→恢复默认设置)


compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" useIR = true } >>>>>>>> 迁移到 java 11 时是否需要在 gradle 文件中添加?
P
Peter Mortensen

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

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

通过在菜单 Settings → Build, Execution, Deployment → Build Tools → Gradle 中将 Gradle JDK 的值“JDK 1.9”替换为“Android Studio SDk 默认 JD 11.0.11”来解决它。


i
isamirkhaan1

https://i.stack.imgur.com/1wGcN.png


P
Peter Mortensen

在 Mac 上,只有将 JAVA_HOME 设置为嵌入到 Android Studio 的 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


只是在我的 Mac 上将 Java 更新到 11 确实有帮助。从终端调用时,Gradle 似乎使用系统 Java 版本(即使在 Android Studio 中的终端中也是如此)。
P
Peter Mortensen

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

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

https://i.stack.imgur.com/JNImI.png

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

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

https://i.stack.imgur.com/z4Ypp.png

对于 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 } >>>>>>>> 迁移到 java 11 时是否需要在 gradle 文件中添加?
@GyanSwaroopAwasthi 使用可以使用 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } 我在以前的项目中使用过。它为我工作
P
Pavel Shorokhov

对于 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
L
Lakpriya Senevirathna

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

转到 https://appcenter.ms/users/user1/apps/yourapp/build/branches

单击设置图标转到构建配置

向下滚动到环境并打开。

将 JAVA_HOME 设置为 $(JAVA_HOME_11_X64)

https://i.stack.imgur.com/nVsP9.png


那种工作形式,伙计,你是救生员xD,谢谢
C
Chris

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


P
Peter Mortensen

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

步骤1:

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

第2步:

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

第 3 步:

申请并重建项目!


compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" useIR = true } >>>>>>>> 迁移到 java 11 时是否需要在 gradle 文件中添加?
K
Kuruchy

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

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

在项目的哪里添加这个?
如果您在 Github Actions Pipeline 上获得此内容,您可以更改项目中 .github/workflows 文件夹下的 Action .yml 文件中的步骤。
虽然这并不能回答 OP 问题,但它与主题相关并且很有帮助!谢谢!
Y
Yuvaraj

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

文件 -> 项目结构

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

单击“应用”和“确定”。

完成这些更改后重新启动您的 android studio

现在,你可以走了

https://i.stack.imgur.com/WwTjs.png


没有什么对我有用。我刚刚更新了颤振 3.0 和 jdk11.0.5
终于为我工作了 android { compileSdkVersion flutter.compileSdkVersion ndkVersion flutter.ndkVersion compileOptions { sourceCompatibility 11 targetCompatibility 11 } kotlinOptions { jvmTarget = "11" useIR = true } sourceSets { main.java.srcDirs += 'src/main/kotlin' }
A
Abid Ali

在 MacOS M1 上,我通过以下步骤解决了它。

在 vsCode 中打开 ~/.zshrc 添加了这一行

export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/Contents/Home"

保存文件通过运行重新加载带有修改文件的终端

source ~/.zshrc

通过运行测试更改是否已加载

echo $JAVA_HOME

验证显示正确的位置。通过运行验证 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

它成功了。


P
Peter Mortensen

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


S
Sidharth Shambu

在 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


当这里没有其他建议时为我工作,Win10,AS 4.1.1
W
Weidian Huang

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

A
Adam

如果你在Android Studio终端遇到这个问题,你应该在你的环境中将JAVA_HOME配置成java 11,在Perferences中设置gradle jdk不能解决。我猜想从终端运行 gradle 和从 ide 运行 gradle 不是同一个进程,它们使用不同的 jdk 位置。


a
anthonyym

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

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

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

Windows 的示例路径:

org.gradle.java.home=C\:\\Program Files\\Java\\jdk-13.0.2

Z
Zeeshan

在 Windows 中,当从目录的 CMD 将 React 本机 v0.67 升级到 0.68 而不安装更新 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 install node

希望它对某人有用


K
Kevin Kozakewich

什么对我有用:

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


(JDK 的当前最新版本是 17.0.1。)
P
Peter Mortensen

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

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