Colección de errores de Android Kotlin KaptExecution

El nombre de la carpeta interfaceresulta en

Introducido debajo del Modulenivel build.gradle, apply plugin: 'kotlin-kapt'aparece el siguiente mensaje de error al construir.

public abstract class BaseStateActivity<T extends androidx.databinding.ViewDataBinding, E extends xxxx.BaseVM> extends xxxxx.BaseVMActivity<T> implements xxxxx.IBindVm<E> {错误: 非法的类型开始
public abstract class BaseStateActivity<T extends androidx.databinding.ViewDataBinding, E extends xxxxx.BaseVM> extends xxxxx.BaseVMActivity<T> implements xxxxx.IBindVm<E> {错误: 需要';'
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
   > java.lang.reflect.InvocationTargetException (no error message)    
problema resuelto:

Por desgracia, este problema me ha molestado durante demasiado tiempo. Más tarde vi en stackoverflow que un tipo desafortunado entró en este pozo. Se paró unos días antes que yo y tardó una semana en resolverlo, pero afortunadamente lo resolvió. 0.0. La razón de este problema es que hay una carpeta interfacenombrada en mi proyecto, y hay una interfaz en interfaceesta carpeta . Esta palabra clave se usa como el nombre de la carpeta para confundir al anotador, y finalmente se genera el stub. interfaceAlgo salió mal. Más tarde cambió el nombre de la carpeta a otro.

fuente

DataBindingLa gramática conduce a

Cuando aparezca lo siguiente, logdebe hacer clic con el mouse para Run with --stacktracever la información detallada por sí mismo.

* What went wrong:
Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
   > java.lang.reflect.InvocationTargetException (no error message)

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

Mi vista personalizada agrega la función de enlace bidireccional, pero la descuidé cuando la escribí y la escribí así

app:y_change_content="@={}"

Luego, registre la impresión al construir What went wrong, haga clic para Run with --stacktraceobtener la siguiente información

Caused by: android.databinding.tool.util.LoggedErrorException: Found data binding error(s):
[databinding] {"msg":"Syntax error: no viable alternative at input \u0027\u003cEOF\u003e\u0027","file":"app\\src\\main\\res\\layout\\fragment_employment_info.xml","pos":[{"line0":54,"col0":41,"line1":54,"col1":44}]}

El mensaje anterior es muy claro, la sintaxis es incorrecta y se ha localizado la línea del error.

JavaEl nombre de la Kotlinclase es el mismo que el nombre de la clase.

La clase Java tiene el mismo nombre que la clase Kotlin. A veces, Studio no mostrará una línea roja en el directorio. En este momento, creará otra KaptExecution. Haga clic para Run with --stacktraceobtener la siguiente información.

Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing ...
Caused by: java.lang.reflect.InvocationTargetException
Caused by: com.sun.tools.javac.util.ClientCodeException: java.lang.IllegalStateException: node.sym must not be null
Caused by: java.lang.IllegalStateException: node.sym must not be null

Bajo el nombre de la clase de nuevo y reconstruir suficiente.
Fuente


  • Actualización 18/12/2020

La interfaz no escribió claramente el nombre del paquete.InvocationTargetException

  • Problema: después de la introducción apply plugin: 'kotlin-kapt', el proyecto de compilación informó un error. Lo usé koinpara la inyección de dependencias. Después de la compilación, descubrí Retrofitque no se podía encontrar el APIobjeto de proxy dinámico que se creó . Siempre que elimine el introducido, kotlin-kaptpuede ser compilado normalmente.
  • Motivo: Al final, se descubrió que no había ningún nombre de paquete en el archivo de clase de la interfaz de proxy, lo que provocó que no se encontrara la interfaz de proxy dinámica cuando se compilaron todas las clases que usaban la interfaz. Sin embargo, kotlin-kaptdespués de la eliminación , no aparecerá ningún nombre de paquete no afectará a la compilación del proyecto.
    Por ejemplo:
// 包名.如果把这个去掉,我用的是koin进行依赖注入的,当引入'kotlin-kapt'编译就会提示EZLoanApiService这个接口找不到.移除就能正常编译.
package com.xxx.xxx.netxx
interface ApiService {
    
    
    @GET(CHECK_PHONE_EXIST)
    suspend fun checkPhone(@QueryMap mData: TreeMap<String, Any>): BResponse<CheckPhoneExist>
}

Supongo que te gusta

Origin blog.csdn.net/MoLiao2046/article/details/108322320
Recomendado
Clasificación