'android-24' requires JDK 1.8 or later to compile

JavaAndroidAndroid Studio

Java Problem Overview


I use Android Studio and recently got the error:

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

But I have JDK 1.8 installed already:

> :\Users..>java -version
> java version "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)

How to fix it? Thanks

Java Solutions


Solution 1 - Java

In Android Studio open:
File > Project Structure > see if JDK location points to your JDK 1.8 directory.

Note: you can use compileSdkVersion 24

Solution 2 - Java

I have a same problem for days. I found a solution which worked from me on Windows. (I also set environment variables, but don't know whether it's needed.)

Add these lines to build.gradle file:

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

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

Solution 3 - Java

I installed latest jdk but it was using the older one until I did this:

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

Replace the old JDK path with your new jdk path.

Works like a charm now :)

Solution 4 - Java

Just an FYI I had this error with an Ionic project. All the commands came back pointing to the correct JDK and JAVA_HOME was set correctly.

There was an entry in my PATH to JDK 1.7\bin, replacing that with the 1.8\bin fixed it for me.

Solution 5 - Java

I was also running into the same issue from the command line on my Mac, but the answer was that JAVA_HOME was getting overridden. To track down where it is getting overridden first check java from the command line:

$ 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)

Then check which version of Java that Gradle is using:

$ 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

At this point, I still hadn't found the source of the problem. Did a little digging, and found that it was indeed overridden in my gradle.properties file even though it was showing Java 8 when I executed gradle -version:

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

To fix, I just deleted the java.home line from gradle.properties. Hopefully this helps if anyone else is running into the same issue from the command line.

Solution 6 - Java

In Android Studio open: File > Project Structure > SDK Location > Select jdk1.8.0_101.jdk > Home

Solution 7 - Java

I was also running into the same issue from the command line on my Windows, it shows the same hint.

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

check JDK location in Project Structure.

> In Android Studio open: File > Project Structure > see if JDK location > points to your JDK 1.8 directory.

It should look like

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

I already set the correct location to JDK.

check the java version

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)

check the gradle version

.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 version should be 1.8. To fix it, we can add in the gradle.property In gradle.properties in the .gradle directory in your HOME_DIRECTORY set org.gradle.java.home=/path_to_jdk_directory. As for me, it is like:

org.gradle.java.home=C:/Program Files/Java/jdk1.8.0_91

To verify if it is set right, we can make a gradle build task.

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

Solution 8 - Java

On Windows 10, I first checked Project Structure and it pointed to an old 1.7 jdk. I closed Android Studio then renamed the old jdks (and jre libraries for consistency) leaving the newest 1.8 library alone. When I restarted Android Studio and attempted to build the application it asked me for the Java JDK library and I gave the path to the newest 1.8 JDK library. On my system it was C:\Program Files\Java\jdk1.8.0_112.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionT D NguyenView Question on Stackoverflow
Solution 1 - JavaJuan Cruz SolerView Answer on Stackoverflow
Solution 2 - JavaSzelk BaltazárView Answer on Stackoverflow
Solution 3 - JavaPawanView Answer on Stackoverflow
Solution 4 - JavaStevoView Answer on Stackoverflow
Solution 5 - JavaBradford2000View Answer on Stackoverflow
Solution 6 - JavaMihir VaghelaView Answer on Stackoverflow
Solution 7 - JavaFrancis BaconView Answer on Stackoverflow
Solution 8 - JavascvblwxqView Answer on Stackoverflow