Android Studio错误 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
我应该如何做呢?
我的安卓工作室版本
我的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 版,那么您应该在设置中更改它。您可以在 Preferences → 构建、执行、部署 → 构建工具 → Gradle → *Gradle JDK 中找到它。
compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = '11' }
。
- Ahsan Ullah Rasel 2021-08-18
build.gradle
文件中。但是,我相信这不会有帮助。请确保你的系统(OS)有Java 11,因为仅仅改变Gradle设置对我没有帮助。在MacOS上,我用sdkman
来安装和使用jdk 11。安装后,我在./gradlew -verion
中看到了用户Java的正确值,项目又开始正常构建了。
- Volodymyr Buberenko 2021-09-21
android
级只是来自react-native
,它的项目结构是这样设置的,因为它有android
、ios
等等。
- Joshua Pinter 2021-09-26
如果你在Windows 10上使用Android Studio(Arctic Fox 2020.3.1),那么你就会发现。
这就是你如何解决 "构建失败 "的错误。
Android Gradle插件需要Java 11才能运行。你目前使用的是Java 1.8
这是我在macOS上修复它的方法。
./gradlew --version
转到偏好 → 构建、执行、部署 → 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 默认值
Embedded JDK version 11.0.11
对我有用。
- Loren.A 2022-02-21
Go to Preference -> Build, Execution, Deployment -> Build Tools -> Gradle
- Sebastian Thomas 2022-03-23
你可以用这种简单的方法来解决这个问题。
去https://www.oracle.com/java/technologies/javase-jdk16-downloads.html
下载你的系统的JDK ZIP文件。(比方说Windows)
在你的电脑主目录下的任何具有高权限的文件夹中解压。
现在打开并转到你的Android studio项目结构,位于men File* → Project structure。
并在这里粘贴你解压JDK版本的目录。如你所见,我的是JDK 16,如图所示,安装在该目录中。
我在 Arctic Fox build 的终端中启动 gradlew ktlintFormat
时遇到此错误。
我打开 Project Structure(菜单 File → Project Structure)并选择了 Java 11,但即使重新启动也无济于事Android Studio 的。
然后我在Settings中改变了Java路径(见已接受的答案),但这没有帮助。你应该设置它。
我尝试更改 Windows 系统变量并更改了
JAVA_HOME
。(一个简短的方法:以管理权限运行
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'未被识别为内部或外部的命令、可操作的程序或批处理文件。
看了在Windows中设置JAVA_HOME变量,我发现我们应该用
Progra~1
替换Program Files
(是的,这个DOS技巧仍然有效)。所以,再把JAVA_HOME替换成如下图所示。重新启动Android Studio或重新设置计算机。
JavaVersion.VERSION_11
和jvmTarget
(JavaVersion.VERSION_11.toString()),如你所写。我想,在这种变化之后,Android Studio会要求升级到Java 11。
- CoolMind 2021-09-30
我在更新Android Studio中需要Java 11的一个依赖项时,出现了这个错误。你只需要遵循这些步骤。
下载 Java 11。对于 Mac,下载 .dmg 文件,对于 Windows,下载 ZIP 文件。链接:下载 Java 11
在安卓工作室中选择选项
按照步骤,选择您新保存的Java SDK。
按照步骤,选择您新保存的Java SDK。
(按照步骤,选择您新保存的Java SDK。)
在 Visual Studio Code 中打开文件 ~/.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
而且,它成功了。
在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 Arctic Fox (4.2)。
- 您可以手动设置Gradle JDK(菜单Preferences → Build Tools → Gradle → Gradle JDK (使用或下载 JDK 11))
- 恢复默认设置,不要在所有项目中做之前的提示(菜单文件 → 管理IDE设置 → 恢复默认设置 )
我刚刚遇到了同样的问题------。
安卓的Gradle插件需要Java 11才能运行。
通过将Gradle JDK、“JDK 1.9”的值替换为“Android Studio SDk default JD 11.0.11”来解决菜单设置 → 构建、执行、部署 → 构建工具 → Gradle。
如果您正在使用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)
我得出的结论是,Gradle调用的是系统上安装的Java版本,与Android Studio的设置无关。
在macOS上,用命令检查系统中已安装的Java版本的列表。
/usr/libexec/java_home -V
如果其中没有Java 11或更高版本,你会得到一个像问题的作者一样的错误。
解决方案是安装Java 11或更高的版本。
第二个解决方案是在文件夹~/Library/Java/JavaVirtualMachines/
中建立一个符号链接,将JRE嵌入到Android Studio中,其命令是:
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
/usr/libexec/java_home -V
检查是对我的帮助。
- James 2021-09-16
对于最新版本,这在我的Windows机器上是可行的
Menu File → 项目结构
从你安装JDK 11的机器上选择JDK 11。
单击Apply 和OK。
在做出这些改变后,重新启动你的Android Studio
现在,你可以走了。
新的Gradle版本需要Java 11。你需要下载Java 11并更新到Gradle中。
首先,你需要检查你当前的JDK版本。'./gradlew --version'。在你的项目终端使用这个注释来了解当前使用的JDK版本。你会得到下面的图片。
如果JVM指向1.8版本,那么你应该在设置中改变它。
用于Ubuntu和Windows。菜单文件→设置→构建、执行、部署→构建工具→Gradle→Gradle JDK。请查看以下图片:
对于 Mac:首选项 → 构建 → 执行、部署 → 构建工具 → Gradle → Gradle JDK.
这对我来说是完美的工作。
For macOS users
捆绑在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上遇到这个错误,这是一个解决方案。
如果您在项目中使用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/workflows
文件夹下的Action .yml文件中的步骤。
- Kuruchy 2022-01-01
当我第一次尝试运行基准测试样本时,我遇到了类似的问题。
运行样本的指令是:执行
./gradlew macrobenchmark:cC
在IDE终端中,但在我的例子中,这导致了同样的错误。
我曾试过上面M Tomczyński提供的已接受的答案,但这对我不起作用。我相信这是我现有的JAVA_HOME
配置的结果(可以在这里找到)。
这也意味着选项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
在 Android Studio Arctic Fox (4.2)中,将 Gradle JDK 改为 11 对我来说很有效。
第1步。
导航到:菜单 文件 → 设置 → 构建、执行、部署 → 构建工具 → Gradle
第2步。
将Gradle JDK改为11,在Gradle项目下面。
第3步。
应用,然后重建项目!
如果你在 Android Studio 的终端中遇到这个问题,你应该将环境中的 JAVA_HOME 配置为 Java 11,在首选项中设置 Gradle JDK 不能解决。我想,从终端运行Gradle和从IDE运行Gradle不是同一个过程,它们使用的JDK位置不同。
我通过在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
For a Flutter project with VS Code
将此添加到文件gradle.properties中。
org.gradle.java.home=<path to JDK 11>
举例说明。
C:\\Program Files\\Java\\jdk-11.0.15
local.properties
,如果你关心最佳实践的话。
- Tanner Davis 2022-10-18
我的问题是,我使用的是Arctic Fox(4.2)之前的Android Studio版本。而似乎只有Arctic Fox支持JDK 11。
在Android Studio 4.2 (Arctic Fox), 2020.3.1 Patch 3中,之前的答案对我来说都不适用。
在我的情况下,只有将org.gradle.java.home=<Path-to-JDK-v11>
加到gradle.properties
才有效。
如果您使用的是 Linux,只需添加 org.gradle.java.home=/opt/android-studio/jre
。
如果你不想使用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
}
在Windows中,我在没有安装更新React Native v0.67到0.68时,从目录的CMD中得到这个错误。
首先,我安装。
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
对我有用的是什么。
- 删除我的用户文件夹中的JDK 1.8的文件夹。
- 重新启动了Android Studio。
- Android Studio在屏幕的顶部降下了一个栏,询问我是否要改变使用的JDK,或者重新下载1.8。
- 我选择了JDK 16,所有的工作都成功了!
对我来说,只要确保我使用位于[Android Studio安装路径]/jre的Gradle JDK就可以了。
试试吧。它也可能对你有用。
我看到这一点是因为在我的Bitbucket服务器上设置了管道,我需要从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!
我正在开发一个Flutter应用程序,它在我的手机上无法运行,并指出 Android Gradle 插件需要 Java 11。
我的Android Studio版本非常旧。我没有看到截图中显示的任何选项。我在系统环境变量中设置了JAVA_HOME后更新了Android Studio。然后它自动选择了Java 11。
如果你只是在首选项→构建、执行、部署→构建工具→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 DevOps管道上遇到这个错误,这是一个解决方案。
如果你在项目中使用了Java 11,但构建应用程序的Azure DevOps管道被设置为使用Java 1.8,那么你会得到这个错误。
为了解决这个问题,请添加以下内容(对于Window pool)。
- 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版本