Android编译错误:Unable to load class 'javax.xml.bind.JAXBException'.This is an unexpected error. Please file a bug containing the idea.log file.解决方法
问题描述
Android项目编译报错信息如下所示:
1 | Unable to load class 'javax.xml.bind.JAXBException'. |
原因分析
其实问题出在gradle的配置上:
下图为gradle-wapper.properties配置
下图为项目build.gradle配置
项目中gradle配置不对应造成上面所提到的问题。
补充资料
gradle 介绍
Gradle
不是Google开发的。Gradle是有专门的团队进行开发维护。并且是完全开源的自动化构建工具。IDEA 默认集成了该工具。可以方便的帮我们将项目代码进行构建打包,是一个脚本工具。
Gradle官网:gradle.org
如果你想了解更多与gradle的相关资料,可以通过官网进行了解。
我们通常在build.gradle
下编辑输入的代码叫做groovy
语言。如果想了解可以学习groovy语言的基本知识。
Android Gradle 插件
Android Studio 是采用Gradle
进行代码的打包编译以及构建项目的。
但是Gradle是一个开源的自动构建工具,是面向全平台的。所以Android 在基于Gradle进行了二次开发,整合了几项专门用于构建Android应用的功能。
该工具命名为:com.android.tools.build:gradle:xxxx
所以,到这里大家理解两者关系了。
android 自己定制化Gradle的插件版本
classpath ‘com.android.tools.build:gradle:3.6.4’
gradle/wrapper/gradle-wrapper.properties
这个是系统独立的Gradle的版本号。
distributionUrl=https://downloads.gradle-dn.com/distributions/gradle-5.6.4-all.zip
所以,这两个的版本号不统一。但是,AndroidGradle 是需要依赖于gradle的,所以两个之间的对应关系比较重要。
版本对应
最新信息
由于以前两个插件的版本一直对应不上,容易造成大家的误解。Android Gradle的版本号 在Gradle发布7.0后,进行了同步。也就是我们在上面看到的。7.0之后就同步上了。两个版本号保持一致。
所以在项目修改build.gradle
中”classpath ‘com.android.tools.build:gradle:4.0.0
‘“与gradle-6.1.1-all.zip
对应后问题得到了解决。
参考链接:https://www.jianshu.com/p/4827aae0bb9f