问题描述

Android项目编译报错信息如下所示:

1
2
3
Unable to load class 'javax.xml.bind.JAXBException'.

This is an unexpected error. Please file a bug containing the idea.log file.

原因分析

其实问题出在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