错误消息“Android Gradle 插件需要 Java 11 才能运行。您当前使用的是 Java 1.8”
Posted
技术标签:
【中文标题】错误消息“Android Gradle 插件需要 Java 11 才能运行。您当前使用的是 Java 1.8”【英文标题】:Error message "Android Gradle plugin requires Java 11 to run. You are currently using 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"
【问题讨论】:
【参考方案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,清理项目,重建项目对我有用!另请检查您的 jvmTarget、sourceCompatibility 和 targetCompatibility 是否设置为 java 11compileOptions 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
,它设置了这样的项目结构,因为它有android
、ios
等等。
这工作:-)
像你提到的那样改变了它。但是当我运行 ./gradlew --version 它仍然显示 JVM 1.8【参考方案3】:
如果您在 Windows 10 上使用 Android Studio (Arctic Fox 2020.3.1)。
这是修复构建失败错误的方法:
Android Gradle 插件需要 Java 11 才能运行。您当前正在使用 Java 1.8
打开项目结构...
(来自工具栏)
(或从文件菜单)
点击Gradle设置链接
从 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】:你可以用这个简单的方法解决它。
转到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 >>>>>>>> 迁移到时是否需要在 gradle 文件中添加java 11 ??【参考方案6】:我在Arctic Fox build 的终端中启动gradlew ktlintFormat
时遇到此错误。
我打开 Project Structure(菜单 File → Project Structure)并选择了 Java 11,但即使重新启动也无济于事Android Studio 的。
然后我在 Settings 中更改了 Java 路径(请参阅接受的答案),但没有帮助。你应该设置它。
我尝试更改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
)。然后OK 和 OK(一如既往)。
我打开cmd
(Windows 中的命令行)并输入:%JAVA_HOME%
。它给我写了这个错误:
'C:\Program' 未被识别为内部或外部命令, 可运行的程序或批处理文件。
查看Setting the JAVA_HOME Variable in Windows,我发现我们应该将Program Files
替换为Progra~1
(是的,这个DOS 技巧仍然有效)。所以,请再次替换 JAVA_HOME,如下图所示。
重启 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_11
和jvmTarget
(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 的依赖项之一时收到此错误。您只需按照以下步骤操作即可。
下载 Java 11。对于 Mac,下载 .dmg 文件,对于 Windows,下载 ZIP 文件。链接:Download Java 11
在 Android Studio 中选择选项
按照步骤并选择您新保存的 Java SDK
按照步骤并选择新保存的 Java SDK。
(按照步骤并选择新保存的 Java SDK。)
【讨论】:
【参考方案9】:如果您当前使用的是 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 >>>>>>>> 迁移到时是否需要在 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:菜单 文件 → 设置 → 构建、执行、部署 → 构建工具 → Gradle → Gradle JDK。请查看下图:
对于 Mac:首选项 → 构建 → 执行、部署 → 构建工具 → Gradle → Gradle JDK.
它对我来说非常有效。
【讨论】:
为什么要复制粘贴现有的答案? @Houman 我不复制现有答案。如果你觉得,对不起。 @ShohelRana 接受的答案来自 4 月,您的答案来自 8 月。你在这里所说的,已经被他的回答所涵盖:***.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】:什么对我有用:
-
正在删除我的用户文件夹中的 JDK 1.8 文件夹。
重新启动 Android Studio。
Android Studio 在屏幕顶部下拉了一个栏,询问我是否要更改要使用的 JDK 或重新下载 1.8。
我选择了 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)
【讨论】:
以上是关于错误消息“Android Gradle 插件需要 Java 11 才能运行。您当前使用的是 Java 1.8”的主要内容,如果未能解决你的问题,请参考以下文章
修复“Android Gradle 插件需要 Java 11 才能运行。您当前使用的是 Java 1.8”后,Android Studio 模拟器仍然无法工作
未能应用插件“com.android.internal.library”。 Android Gradle 插件需要 Java 11 才能运行。您当前使用的是 Java 1.8
“Android Gradle 插件需要 Java 11 才能运行”在发布 jitpack 库时