AS Gradle task构建失败CompilationFailedException解决
Posted Androider_Zxg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AS Gradle task构建失败CompilationFailedException解决相关的知识,希望对你有一定的参考价值。
问题
在编译运行项目时,会提示一些Task的错误,但并没有列出错误的具体原因。我们无法根据已有的提示找出错误所在。如下:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':module-risk-control:compileDebugJavaWithJavac'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.
.......
Caused by: org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed; see the compiler error output for details.
.......
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
... 32 more
根据报错内容,可以看出是执行compileDebugJavaWithJava任务时报错的错误。异常为:TaskExecutionException(任务执行错误)并被告知编译失败异常(CompilationFailedException)。那么这个所谓的任务又是什么呢?它其实是Gradle构建工程的任务。我们从android Studio右边栏打开gradle,可以看到有很多的任务。这一点和maven很相似,如下:
解决方案
我们可以使用gradlew命令在命令行中来单独执行报错的那个任务,并打印出具体错误,命令如下:
gradlew tasknmae --stacktrace --info
在Mac下gradlew前需要加./
./gradlew tasknmae --stacktrace --info
那么在本例中,报错的taskName为compileDebugJavaWithJavac,则敲入命令
./gradlew compileDebugJavaWithJavac --stacktrace --info
运行后就会看到具体错误,如下:
可以看到,是我们在使用ARouter框架时产生的错误。最后问题定位到:使用阿里路由组件时,定义路径时,不能使用"-"。将项目中
/**
* 风控模块路由
*/
public static final String ROUTE_RISK_CONTROL = "/risk-control/main";
改为
/**
* 风控模块路由
*/
public static final String ROUTE_RISK_CONTROL = "/risk/control/main";
这样就好了
其他
在Mac中,如果使用gradlew找不到命令,可以先输入命令
chmod +x gradlew
以上是关于AS Gradle task构建失败CompilationFailedException解决的主要内容,如果未能解决你的问题,请参考以下文章
由于 Android 上的 lint 类路径错误,Gradle 构建失败
org.gradle.api.tasks.TaskExecutionException:任务':app:transformClassesWithDexForDebug'的执行失败
org.gradle.api.tasks.TaskExecutionException:任务“执行失败:transformDexArchiveWithExternalLibsDexMergerForD