java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException after updating to Android Studio 4.2

33.7k Views Asked by At

Google just release Android Studio 4.2 stable. I updated my AS from 4.1 to 4.2. Now I am getting this error. It's showing error in data binding.

Caused by: java.util.ServiceConfigurationError: javax.annotation.processing.Processor: android.databinding.annotationprocessor.ProcessDataBinding Unable to get public no-arg constructor
        at kotlin.collections.CollectionsKt___CollectionsKt.toCollection(_Collections.kt:1200)
        at kotlin.collections.CollectionsKt___CollectionsKt.toMutableList(_Collections.kt:1233)
        at kotlin.collections.CollectionsKt___CollectionsKt.toList(_Collections.kt:1224)
        at org.jetbrains.kotlin.kapt3.base.ProcessorLoader.doLoadProcessors(ProcessorLoader.kt:80)
        at org.jetbrains.kotlin.kapt3.base.ProcessorLoader.loadProcessors(ProcessorLoader.kt:45)
        at org.jetbrains.kotlin.kapt3.base.Kapt.kapt(Kapt.kt:42)
        ... 28 more
Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
        ... 34 more
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
        ... 34 more
7

There are 7 best solutions below

3
On BEST ANSWER

Android Studio 4.2.0 and more now comes with Java 11.0.8 shipped and will use it by default which cases this error in deprecated libraries.

The solution is simple, you need to change it to java (JDK) 1.8 in the menu File > Project Structure > JDK Location

image

Notices that Android Studio lower than 4.2.0 comes with java 1.8 already

1
On

I had same issue, and I alrady solved. I found that Android studio 4.2 will make the JDK update to Java11, it will cause error what you described.

You can delete the Java11 JDK and replace by Java8 (/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home).

Also you can uninstall the Android Studio, and reinstall it.

0
On

If you are using Ubuntu then just change the JDK location to JAVA (JDK) 1.8 in the menu File > Project Structure > JDK Location

JDK location android studio 4.2

0
On

I thought it was the jdk route, after hours searching, this worked for me

distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip

in your build.gradle file add and update kotlin_version

ext.kotlin_version = '1.4.32'

 dependencies {
        classpath 'com.android.tools.build:gradle:4.2.1'
    }

if you use enableAapt2 remove it from your gradle.properties file

org.gradle.jvmargs=-Xmx1536M -Dkotlin.daemon.jvm.options\="-Xmx1536M"
#android.enableAapt2=false
android.useAndroidX=true
android.enableJetifier=true
0
On

If you are coming here having Android Studio Arctic Fox which comes by default with Java 11, you need to use java 1.8 to find necessary classes which are completely removed in java 11 upgrade.

Path to set in Android Studio Arctic Fox is as follows

Preferences > Build execution Deployment > Gradle > Gradle Sdk

Choose Download JDK then Java 1.8.x version and rebuild the project.

0
On

there are two method to solve this problem

  1. roll back to Java 8
  2. update gradle tools 'com.android.tools.build:gradle' like 4.2.1(I used) maybe you will encounter "Entry name 'AndroidManifest.xml' collided" problem, add below to you App build.gradle
android {
    packagingOptions {
        exclude 'AndroidManifest.xml'
    }
}
0
On

By doing the following steps I solved this problem without replacing JDK with JAVA 8.

Step 1 : Update the distributionUrl to https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip in your gradle-wrapper.properties

Step 2: Update your gradle tool classpath to 'com.android.tools.build:gradle:4.2.1' in your root buid.gradle