CompilationFailedException解决

问题

在Gradle版本升级后,编译运行项目时,提示org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed;但没有列出错误的具体原因。我们无法根据现有的编译log找出错误所在,如下:


image.png

根据报错内容,可以看出是执行compileDebugJavaWithJava任务时报的错误。异常为:TaskExecutionException(任务执行错误)并被告知编译失败异常(CompilationFailedException)。

解决

我们可以使用gradlew命令在命令行中来单独执行报错任务,并打印出具体错误信息,我遇到的报错的taskName为compileDebugJavaWithJavac,那么命令如下:

gradlew compileDebugJavaWithJavac --stacktrace --info

运行后会看到具体的错误,如下:


image.png

我这边遇到的问题单独执行报错任务后,也没有具体详细的错误信息(大部分异常可以直接看到详细的错误信息)

但是可以看到lib_common模块下databinding相关的报错信息,于是解决android.databinding.tool.expr.Expr.resolveListeners(Expr.java:211)相关的异常,这个异常是因为在xml文件中使用了get()方法,去掉get()方法后重新编译,编译成功。

android.databinding.tool.expr.Expr.resolveListeners异常解决链接:

stackoverflow:
    https://stackoverflow.com/questions/58763363/when-building-android-project-with-android-gradle-plugin-v-3-5-2-my-builds-fail

解决方法:
    去除xml文件中databing熟悉的get()方法,如在xml中定义了一个ObservableBoolean flag,不要使用flag.get()

总结

在编译时遇到CompilationFailedException,并没有详细报错信息时,单独执行报错任务

gradlew taskName(报错任务名称,需具体替换) --stacktrace --info

然后获取到具体报错信息后,解决相应的报错问题,重新编译。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容