Android SDK 31 and KAPT dependency on JDK 11

1.9k Views Asked by At

I am trying to upgrade the compilesdk of my app with API 31. My app has a dependency on KAPT. When I build my app with kapt and SDK 30 and jdk 8, the app builds fine and runs. but when I increase my sdk version to 31. I start getting below error:

An exception has occurred in the compiler (1.8.0_332). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.AssertionError: annotationType(): unrecognized Attribute name MODULE (class com.sun.tools.javac.util.UnsharedNameTable$NameImpl)
.....
....
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:356)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
        at java.lang.Thread.run(Thread.java:750)

This thing work. myapp + sdk 30+ jdk8 + kapt = working myapp + sdk 31 + jdk 8 + kapt = not working

myapp+ sdk 31 + jdk 11 + kapt = working myapp+ sdk 31 + jdk 8 - kapt = working

I want to understand, why its happening. Why JDK 11 is needed with sdk 31 to build kapt dependency which was working with JDK 8 and SDK 30?

1

There are 1 best solutions below

0
On

Same issue but not exactly sure why.

To get it to work, I go to Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JDK: --> Set this to 11

Here's a good answer related to this https://stackoverflow.com/a/69250502/10189554