ChatGPT解决这个技术问题 Extra ChatGPT

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

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

Thanks. It works now.

J
Juan Cruz Soler

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

Note: you can use compileSdkVersion 24


Somehow, changning to JDK8 using the above solution did not work. File->Project Structure->JDK location gets reverted to jdk1.7 during every build. Solution by @Szelk Baltazár worked for me.
As said before, JDK location gets reverted to jdk 1.7, and solution of @Szelk Baltazár also doesn't work. So, redefine system variables as in stackoverflow.com/a/35974928/2914140, close Android Studio (and maybe restart a computer). Change location by deleting file jdk.table.xml as described in stackoverflow.com/a/38067170/2914140. It's all so terrible in a Java world.
S
Szelk Baltazár

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


M
Murray Foxcroft

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


S
Stevo

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.


B
Bradford2000

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.


M
Mihir Vaghela

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


F
Francis Bacon

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

If anyone could help me to fix the formatting of this answer, that will be very appreciated.
s
scvblwxq

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.