java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException 更新到 Android Studio 4.2 后

iam*_*sal 11 java android kotlin android-studio android-studio-4.2

Google 刚刚发布了稳定版 Android Studio 4.2。我将我的 AS 从 4.1 更新到 4.2。现在我收到此错误。它显示数据绑定错误。

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
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 27

Android Studio 4.2.0及更高版本现在随附 Java 11.0.8,默认情况下将使用它,这会在已弃用的库中出现此错误。

解决方法很简单,需要在菜单中改成java(JDK)1.8File > Project Structure > JDK Location

图片

注意低于 4.2.0 的 Android Studio 已经自带 java 1.8

  • 编辑:提供正确的 JDK 位置后,它最终接受了。只是 Android Studio 中另一个误导性的弹出窗口。 (3认同)
  • 我无法在菜单中设置 JDK8:“请选择有效的 JDK 11 目录” (2认同)

Den*_*tor 11

通过执行以下步骤,我解决了这个问题,而没有用 JAVA 8 替换 JDK。

第1步:更新distributionUrlhttps\://services.gradle.org/distributions/gradle-6.8.3-bin.zip您的gradle-wrapper.properties

第 2 步:将您的 gradle 工具类路径更新到'com.android.tools.build:gradle:4.2.1'您的根目录中buid.gradle


小智 6

我有同样的问题,我已经解决了。我发现Android studio 4.2会将JDK更新为Java11,这会导致您描述的错误。

您可以删除 Java11 JDK 并替换为 Java8 (/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home)。

您也可以卸载Android Studio,然后重新安装。


小智 6

如果您使用的是 Ubuntu,则只需在菜单 File > Project Structure > JDK Location 中将 JDK 位置更改为 JAVA (JDK) 1.8

JDK 位置 android studio 4.2


小智 5

我以为这是jdk路线,经过几个小时的搜索,这对我有用

distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
Run Code Online (Sandbox Code Playgroud)

在您的 build.gradle 文件中添加并更新 kotlin_version

ext.kotlin_version = '1.4.32'

 dependencies {
        classpath 'com.android.tools.build:gradle:4.2.1'
    }
Run Code Online (Sandbox Code Playgroud)

如果您使用enableAapt2,请将其从gradle.properties文件中删除

org.gradle.jvmargs=-Xmx1536M -Dkotlin.daemon.jvm.options\="-Xmx1536M"
#android.enableAapt2=false
android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)