Error:compileSdkVersion android-21 requires compiling with JDK 7

AndroidMacos

Android Problem Overview


While compiling i get the error Error:compileSdkVersion android-21 requires compiling with JDK 7, saying that a newer version of JDK is required.

I'm running on OS X Yosemite with Android Studio v0.8.14

Things I checked :

  1. Java version :

java version "1.8.0_25" Java(TM) SE Runtime Environment (build 1.8.0_25-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

  1. Inside the JavaVirtualMachine folder I can see only 1.6.0.jdk folder, I cannot find any other folder.

  2. Tried reinstalling JDk 8 and 7!

I'm unable to find the folder location of jvm 1.8, any idea how I can fix there.

Android Solutions


Solution 1 - Android

The Exact Fix for this Issue (Android Studio Users on Mac)

If you have already upgraded to Java 8, please note that the JDK location is now within /Library/Java compared to Java 6's location /System/Library/Java. So to fix this problem, Right click on the Project folder > Project Structure > SDK Location.

Then change JDK location to

/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home

If you have installed a different JDK version (other than Java 8), find out the path using the java_home script first and use the output. Just run,

/usr/libexec/java_home 

Solution 2 - Android

Actually I just found the solution - JDK 7 is in /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home.

that got it working for me. Oracle Docs on where JDK7 is installed

Solution 3 - Android

I got a solution. It happened with me too and I searched a lot on Google but all I got was hints. A lot of hints. And I came up with a sure shot solution.

This is because the computer doesn't have JDK 7 (or greater) installed. The JDK directory in AS/Configuration might points to JDK6. (That System/Library/...)

All you need to do is:

  1. Download latest JDK.
  2. Install it.
  3. Point Android Studio/Configure/Project Defaults/Project Structure/(JDK Location: ) to /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home

Text highlighted in bold-italics may differ, so it's recommended that you browse it. Hope this helps. Spent a whole day messing up with gradle, android studio. Happy coding.

Solution 4 - Android

I found Eric and Subin's answers combined solved my problem:

i.e. need to set the java JDK to Eric's answer (assuming you're using JDK 7):

/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home.

The mistake I made was I tried to just select the jdk1.7.0_71.jdk directory and I kept getting the error message "Please choose a valid JDK directory".

I was working on the format previously used for JDK 6 :(

  • It worked when I gave it the full path down to into Contents/Home.

Subin's answer tells you how to find your JDK location which may be different depending on what you're trying to do.

Thanks Eric and Subin!

Solution 5 - Android

I am sharing this because I want to help those that found this question when they Googled the error. Most other "answers" on the internet were very time consuming. Follow below before you waste so much time like I did.


What I did was to download JDK 7

Then change the setting of the jdk to 1.7.0

enter image description here

Solution 6 - Android

I have been having this problem too. So far I cannot find a fix for it, so I've resorted to changing the maximum SDK version to 20, which works with JDK6.

As for the file location, instead of Android studio assuming it should be in /System/Library/Java/JavaVirtualMachines/Insert JDK version/Contents/Home.

In reality my JDK gets installed in /Library/Java/JavaVirtualMachines/JDK Version Here/Contents/Home.

Trying to select a JDK in the actual directory where its installed makes android studio say that I need to select a valid JDK location. For now I can't find a fix, so like I said above, I have resorted to changing the maximum SDK version to 20 instead of 21 and it will stay like that until more people either suffer from the bug so that Google fix it. Or until an actual fix gets posted online instead of 101 ways for it not to work.

Hope this helps for now, it isn't really a solution/answer but it is a work around that works for me, for the time being.

Solution 7 - Android

if you only have folder 1.6.0.jdk then go to this link and download and install jdk 1.7. then find your java folder in this path

/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home

Solution 8 - Android

The solutions on this thread are not valid for the same error in Android Studio 1.4 . The preferences menu, for example, is gone. Below is the solution for Android Studio 1.4 running on Ubuntu 14.04.

To solve in Ubuntu 14.04+ and Android Studio 1.4+, you need to go to

File -> Other Settings -> Default Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler -> Project Bytecode Version

This drop-down will be empty by default.

Set to your preferred JDK, in the case of the screencap below, 1.8 .

android sdk screencap

Voila, your project will compile.

Solution 9 - Android

  1. Download from here latest JDK.
  2. Open command line tool.
  3. Copy and paste following line into your command line tool and press return.

> /usr/libexec/java_home

  1. Copy output of this command.
  2. Go back to your android project, and navigate as below

> File -> Project structure -> JDK location

edit(click on square with three dots) JDK location(2nd in image) and paste command line tool output there.

enter image description here I have gathered these instructions using MacBook Pro.

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
QuestionArjun KomathView Question on Stackoverflow
Solution 1 - AndroidC--View Answer on Stackoverflow
Solution 2 - Androidgsueagle2008View Answer on Stackoverflow
Solution 3 - AndroidTheOnlyAnilView Answer on Stackoverflow
Solution 4 - Androiduser2155964View Answer on Stackoverflow
Solution 5 - AndroidJGallardoView Answer on Stackoverflow
Solution 6 - AndroidLeccles1View Answer on Stackoverflow
Solution 7 - AndroidhashView Answer on Stackoverflow
Solution 8 - AndroidbarnhillecView Answer on Stackoverflow
Solution 9 - Androiduser2511630View Answer on Stackoverflow