解决A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask

构建Kotlin项目时报错如下:

Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction
   > java.lang.reflect.InvocationTargetException (no error message)
  1. 先检查是否有其他报错信息:
    例如:
错误: cannot generate view binders java.lang.NullPointerException
  	at android.databinding.tool.store.SetterStore.calculateConversionPriority(SetterStore.java:995)
  	at android.databinding.tool.store.SetterStore.isBetterParameter(SetterStore.java:890)
  	at android.databinding.tool.store.SetterStore.getBestSetter(SetterStore.java:750)
  	at android.databinding.tool.store.SetterStore.getSetterCall(SetterStore.java:572)
  	at android.databinding.tool.Binding.getListenerParameter(Binding.java:175)
  	at android.databinding.tool.Binding.resolveCallbackParams(Binding.java:77)
  	at android.databinding.tool.BindingTarget.resolveCallbackParams(BindingTarget.java:179)
  	at android.databinding.tool.LayoutBinder.<init>(LayoutBinder.java:142)
  	at android.databinding.tool.DataBinder.<init>(DataBinder.java:61)
  	at android.databinding.tool.CompilerChef.ensureDataBinder(CompilerChef.java:118)
  	at android.databinding.tool.CompilerChef.sealModels(CompilerChef.java:370)

这是说ViewDataBinding有问题,检查XML文件是否有引用错误的地方。

2.排除掉代码层面和xml层面的问题之后,考虑这种问题多半是版本不匹配造成的。一般按照以下步骤排查即可解决:

  • Android Gradle 插件版本与所需的Gradle版本是否匹配?

具体的版本对应地址
gradle插件版本在根目录的build.gradle中的buildscript{}中查看得到
gradle版本在gradle/wrapper/gradle-wrapper.properties中查看得到

  • Android kotlin插件版本与所需的Kotlin版本是否一样

kotlin插件版本在根目录的build.gradle中的buildscript{}中查看得到
AS的kotlin版本在File | Settings | Languages & Frameworks | Kotlin中查看得到

  • Gradle JDK 是否正确

File | Settings | Build, Execution, Deployment | Build Tools | Gradle中的Gradle JDK选择合适的版本Embedded JDK

  • 第三方与kotlin插件的版本是否匹配?

举个例子
Kotlin-Version = 1.6.0 => Room-Version = 2.4.2

猜你喜欢

转载自blog.csdn.net/jxq1994/article/details/129880109