升级Android Studio 4.2后出现javax/xml/bind/JAXBException数据绑定报错
Android Studio 4.2 升级后数据绑定JAXB异常解决方案
错误根因
Android Studio 4.2 默认捆绑JDK 11作为构建运行环境,JDK 9及以上版本移除了原内置的JAXB系列模块,低版本数据绑定注解处理器依赖该模块,因此触发类不存在异常,对应错误栈如下:
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
解决方案
方案1:添加JAXB依赖(推荐)
无需修改全局JDK配置,仅需在模块级build.gradle的dependencies代码块中新增对应依赖即可:
- 项目使用Kotlin且开启kapt的配置:
dependencies { // 保留原有其他依赖不变 kapt "com.sun.xml.bind:jaxb-core:2.3.0.1" kapt "com.sun.xml.bind:jaxb-impl:2.3.3" }
- 项目仅使用Java的配置:
dependencies { // 保留原有其他依赖不变 annotationProcessor "com.sun.xml.bind:jaxb-core:2.3.0.1" annotationProcessor "com.sun.xml.bind:jaxb-impl:2.3.3" }
添加完成后同步Gradle,重新构建即可解决问题。
方案2:指定Gradle使用JDK 8
若不想新增第三方依赖,可手动修改Gradle构建使用的JDK版本为JDK 8:
- 打开Android Studio设置页:
- Windows/Linux:
File > Settings > Build, Execution, Deployment > Build Tools > Gradle - Mac:
Android Studio > Preferences > Build, Execution, Deployment > Build Tools > Gradle
- Windows/Linux:
- 在「Gradle JDK」下拉列表中选择本地已安装的JDK 8
- 保存配置后重新构建项目即可。
内容的提问来源于stack exchange,提问作者iamanbansal
相关产品推荐
相关产品推荐

