“android-24”需要JDK 1.8或更高版本才能编译。

77

我使用Android Studio,最近出现了以下错误:

Error:Execution failed for task ':app:compileDebugJavaWithJavac'. compileSdkVersion 'android-24'需要使用 JDK1.8或更高版本进行编译。

但我已经安装了JDK1.8:

:\Users..>java -version
java版本 "1.8.0_91" Java(TM) SE Runtime
Environment (build 1.8.0_91-b15) Java HotSpot(TM) 64-Bit Server VM
(build 25.91-b15, mixed mode)

如何解决?谢谢。


谢谢。现在它可以工作了。 - T D Nguyen
8个回答

179
在Android Studio中打开:
File > Project Structure > 检查JDK位置是否指向你的JDK 1.8目录。 注意: 可以使用compileSdkVersion 24

4
使用以上方法切换到JDK8似乎没有起作用。在每次构建时,文件->项目结构->JDK位置会恢复到jdk1.7。@Szelk Baltazár提供的解决方案适合我。 - garnet
如前所述,JDK位置会被还原为jdk 1.7,并且@Szelk Baltazár的解决方案也无效。因此,请按照https://dev59.com/oFsV5IYBdhLWcg3wrQcp#35974928中重新定义系统变量的方法进行操作,关闭Android Studio(可能需要重新启动计算机)。按照https://dev59.com/VloT5IYBdhLWcg3w4SlQ#38067170中所述删除文件`jdk.table.xml`以更改位置。在Java世界中,这一切都是如此可怕。 - CoolMind

9

我已经遇到了同样的问题几天了。我在Windows上找到了一个解决方案(我还设置了环境变量,但不知道是否需要)。

将以下内容添加到build.gradle文件中:

android {
     ...
     defaultConfig {
          ...
          jackOptions {
              enabled true
          }
     }
     compileOptions {
         targetCompatibility 1.8
         sourceCompatibility 1.8
     }
}

来源:https://code.google.com/p/android/issues/detail?id=203850

这是一个关于Android设备上的音频问题的报告。用户在使用应用程序时遇到了音频播放不连续或跳过的问题。经过调查,发现是由于系统中的音频缓冲区大小设置不合理导致的。解决方法是通过代码设置缓冲区大小来避免这个问题。具体的代码实现和示例可以参考报告中提供的链接。


2

我安装了最新的JDK,但直到我执行以下操作之前,它仍在使用旧版本:

app rt-click >> module settings >> sdk location >> (old jdk path)

用新的jdk路径替换旧的JDK路径。

现在完美运行 :)


2

提醒一下,我在一个Ionic项目中遇到了这个错误。所有的命令都指向了正确的JDK,并且JAVA_HOME也被正确设置了。

我的PATH中有一个指向JDK 1.7\bin的条目,将其替换为1.8\bin就解决了这个问题。


0
在Windows 10上,我首先检查了项目结构,发现它指向一个旧的1.7 jdk。我关闭了Android Studio,然后重命名了旧的jdks(为了保持一致性还有jre库),只留下最新的1.8库。当我重新启动Android Studio并尝试构建应用程序时,它要求我提供Java JDK库的路径,我给出了最新的1.8 JDK库的路径。在我的系统中,它是C:\Program Files\Java\jdk1.8.0_112。

0
在Android Studio中打开: 文件 > 项目结构 > SDK位置 > 选择jdk1.8.0_101.jdk > 主目录

0

我在Windows命令行中也遇到了同样的问题,它显示相同的提示。

Error:Execution failed for task ':app:compileDebugJavaWithJavac'. `compileSdkVersion 'android-24' requires JDK 1.8 or later to compile.`

项目结构 中检查 JDK 位置

在 Android Studio 中打开:文件 > 项目结构 > 查看 JDK 位置是否指向 JDK 1.8 目录。

它应该看起来像这样:

JDK Location
C:\Program Files\Java\jdk1.8.0_91

我已经将JDK的正确位置设置好了。

检查Java版本。

D:\AndroidSelfTrainingProject\CustomBuildIdDemo>java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

检查 Gradle 版本

.D:\AndroidSelfTrainingProject\CustomBuildIdDemo>gradle -v

------------------------------------------------------------
Gradle 2.10
------------------------------------------------------------

Build time:   2015-12-21 21:15:04 UTC
Build number: none
Revision:     276bdcded730f53aa8c11b479986aafa58e124a6

Groovy:       2.4.4
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.7.0_79 (Oracle Corporation 24.79-b02)
OS:           Windows 7 6.1 amd64

JVM版本应该是1.8。 为了解决这个问题,我们可以在gradle.property中添加 在HOME_DIRECTORY中的.gradle目录下的gradle.properties中设置org.gradle.java.home=/path_to_jdk_directory。对于我来说,它是这样的:
org.gradle.java.home=C:/Program Files/Java/jdk1.8.0_91

为了验证是否设置正确,我们可以执行gradle build任务。

D:\AndroidSelfTrainingProject\CustomBuildIdDemo>gradle build
To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon
: https://docs.gradle.org/2.10/userguide/gradle_daemon.html.

To run dex in process, the Gradle daemon needs a larger heap.
It currently has approximately 910 MB.
For faster builds, increase the maximum heap size for the Gradle daemon to more than 2048 MB.
To do this set org.gradle.jvmargs=-Xmx2048M in the project gradle.properties.
For more information see https://docs.gradle.org/current/userguide/build_environment.html

如果有人能帮我修复这个答案的格式,那将不胜感激。 - Francis Bacon

0

我在我的Mac上也遇到了同样的问题,但答案是 JAVA_HOME 被覆盖了。要找出它被覆盖的位置,首先从命令行检查java:

$ java -version
java version "1.8.0_92"
Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)

然后检查Gradle正在使用哪个版本的Java:

$ gradle -version

------------------------------------------------------------
Gradle 2.13
------------------------------------------------------------

Build time:   2016-04-25 04:10:10 UTC
Build number: none
Revision:     3b427b1481e46232107303c90be7b05079b05b1c

Groovy:       2.4.4
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_92 (Oracle Corporation 25.92-b14)
OS:           Mac OS X 10.11.5 x86_64

此时,我仍然没有找到问题的根源。经过一番搜索,发现即使在执行gradle -version时显示Java 8,它仍然被覆盖在我的gradle.properties文件中:
org.gradle.daemon=true
org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
org.gradle.jvmargs=-XX:MaxPermSize=512m -XX:-UseSplitVerifier -Xms512m -Xmx6144m

为了解决这个问题,我只需从gradle.properties中删除java.home行。希望如果其他人也遇到同样的问题,这可以帮到他们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接