java.lang.NoClassDefFoundError:javax/xml/bind/JAXBException更新到AndroidStudio4.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
回答
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
- EDIT: after providing correct JDK location, it finally accepted. Just another misleading pop-up in Android Studio.
回答
通过执行以下步骤,我解决了这个问题,而没有用 JAVA 8 替换 JDK。
第1步:更新distributionUrl到https://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
回答
我有同样的问题,我已经解决了。我发现Android studio 4.2会将JDK更新为Java11,这会导致您描述的错误。
您可以删除 Java11 JDK 并替换为 Java8 (/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home)。
您也可以卸载Android Studio,然后重新安装。
回答
如果您使用的是 Ubuntu,则只需在菜单 File > Project Structure > JDK Location 中将 JDK 位置更改为 JAVA (JDK) 1.8
JDK 位置 android studio 4.2