web-dev-qa-db-fra.com

: app: kaptDevDebugKotlin FAILED Exception de génération: impossible de trouver le symbole DataBindingComponent

J'essaie de résoudre ce problème ennuyeux depuis trop longtemps sans aucun progrès.

Notre application a la plupart des classes écrites en Kotlin, et nous utilisons également la liaison de données:

apply plugin: "kotlin-kapt"  
apply plugin: 'kotlin-Android'  
apply plugin: 'kotlin-Android-extensions'

Lorsque vous essayez d'exécuter de l'application, nous voyons plusieurs exceptions comme suit dans le dialogue de construction (quand je dis plusieurs, je veux dire plus de 50):

e: .../Android/app/build/generated/source/dataBinding/baseClasses/dev/debug/com/company/app/databinding/IncludeFilterHeaderTabButtonBinding.Java:21: error: cannot find symbol
  protected IncludeFilterHeaderTabButtonBinding(DataBindingComponent _bindingComponent, View _root,
                                                ^
  symbol:   class DataBindingComponent
  location: class IncludeFilterHeaderTabButtonBinding

Cette application importe un SDK fait maison, entièrement écrit en Java, qui utilise également la liaison de données. Y at-il un problème connu à ce sujet?

Ce sont les dépendances pour l'application principale:

implementation 'com.Android.support:support-core-utils:27.1.1'  
implementation 'com.Android.support:support-annotations:27.1.1'  
implementation 'com.Android.support.constraint:constraint-layout:1.1.2'  
implementation 'com.Android.support:appcompat-v7:27.1.1'  
implementation 'com.Android.support:design:27.1.1'  
implementation 'com.Android.support:cardview-v7:27.1.1'  
implementation 'com.Android.support:recyclerview-v7:27.1.1'  
implementation 'com.Android.support:customtabs:27.1.1'  

implementation 'com.google.Android.gms:play-services-vision:12.0.1'  
implementation 'com.google.Android.gms:play-services-maps:12.0.1'  

implementation 'com.afollestad.material-dialogs:core:0.9.6.0'  
implementation 'com.afollestad.material-dialogs:commons:0.9.6.0'  

implementation 'com.github.bumptech.glide:glide:4.7.1'  
kapt 'com.github.bumptech.glide:compiler:4.7.1'  
implementation 'com.github.bumptech.glide:compiler:4.7.1'  
kapt "com.Android.databinding:compiler:3.1.3"

implementation 'com.squareup.okhttp3:okhttp:3.9.0'  
implementation 'com.squareup.okhttp3:logging-interceptor:3.9.0'  

implementation 'com.squareup.retrofit2:retrofit:2.3.0'  
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'  
implementation 'com.squareup.retrofit2:converter-simplexml:2.3.0'  

implementation 'com.google.firebase:firebase-core:12.0.1'  
implementation 'org.simpleframework:simple-xml:2.7.+'  

implementation 'net.danlew:Android.joda:2.9.9'  

implementation 'me.dm7.barcodescanner:zxing:1.9.8'  

// Home made SDK initialization per flavor and build type
implementation(name: 'appauth-1.0.2', ext: 'aar')  
mockDebugCompile(name: 'sdk-mock-debug', ext: 'aar')  
mockReleaseCompile(name: 'sdk-mock-release', ext: 'aar')  
devDebugCompile(name: 'sdk-dev-debug', ext: 'aar')  
devReleaseCompile(name: 'sdk-dev-release', ext: 'aar')  
proDebugCompile(name: 'sdk-pro-debug', ext: 'aar')  
proReleaseCompile(name: 'sdk-pro-release', 'ext': 'aar')  

// Testing
testImplementation 'junit:junit:4.12'
androidTestImplementation('com.Android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.Android.support', module: 'support-annotations'
})
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
// Crashlytics Kit
implementation('com.crashlytics.sdk.Android:crashlytics:2.9.1@aar') {
    transitive = true
}

Avec les versions suivantes:

Android Studio 3.1.3
Gradle 3.1.3
Kotlin Gradle Plugin 1.2.51

Bien sûr, nous avons

dataBinding {
    enabled = true
}

Merci!

METTRE À JOUR 

Ajout de la sortie de ./gradlew build --stacktrace

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:kaptDevDebugKotlin'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.Java:100)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.Java:70)
        at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.Java:51)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.Java:62)
        at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.Java:54)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.Java:60)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.Java:97)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.Java:87)
        at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.Java:52)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.Java:52)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.Java:54)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.Java:43)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.Java:34)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.Java:248)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.Java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.Java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.Java:199)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.Java:110)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.Java:241)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.Java:230)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.Java:123)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.Java:79)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.Java:104)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.Java:98)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.Java:626)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.Java:581)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.Java:98)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.Java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.Java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.Java:55)
Caused by: org.gradle.api.GradleException: Compilation error. See log for more details
        at org.jetbrains.kotlin.gradle.tasks.TasksUtilsKt.throwGradleExceptionIfError(tasksUtils.kt:8)
        at org.jetbrains.kotlin.gradle.internal.KaptTask.compile(KaptTask.kt:124)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.Java:73)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.Java:46)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.Java:39)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.Java:26)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.Java:780)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.Java:747)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.Java:121)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.Java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.Java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.Java:199)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.Java:110)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.Java:110)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.Java:92)
        ... 29 more

MISE À JOUR 2

J'ai été obligé de vérifier chaque fichier de mon projet, à la recherche d'erreurs non enregistrées par gradle ... et après avoir corrigé quelques fichiers Java, l'erreur est passée de l'original "symbole introuvable" à une seule exception:

e: Java.util.ServiceConfigurationError: javax.annotation.processing.Processor: Android.databinding.annotationprocessor.ProcessDataBinding Unable to get public no-arg constructor
        at Java.base/Java.util.ServiceLoader.fail(ServiceLoader.Java:581)
        at Java.base/Java.util.ServiceLoader.getConstructor(ServiceLoader.Java:672)
        at Java.base/Java.util.ServiceLoader.access$1000(ServiceLoader.Java:390)
        at Java.base/Java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.Java:1232)
        at Java.base/Java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.Java:1264)
        at Java.base/Java.util.ServiceLoader$2.hasNext(ServiceLoader.Java:1299)
        at Java.base/Java.util.ServiceLoader$3.hasNext(ServiceLoader.Java:1384)
        at kotlin.collections.CollectionsKt___CollectionsKt.toCollection(_Collections.kt:1058)
        at kotlin.collections.CollectionsKt___CollectionsKt.toMutableList(_Collections.kt:1091)
        at kotlin.collections.CollectionsKt___CollectionsKt.toList(_Collections.kt:1082)
        at org.jetbrains.kotlin.kapt3.ClasspathBasedKapt3Extension.loadProcessors(Kapt3Extension.kt:106)
        at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.analysisCompleted(Kapt3Extension.kt:175)
        at org.jetbrains.kotlin.kapt3.ClasspathBasedKapt3Extension.analysisCompleted(Kapt3Extension.kt:93)
        at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM$analyzeFilesWithJavaIntegration$2.invoke(TopDownAnalyzerFacadeForJVM.kt:97)
        at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.kt:107)
        at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration$default(TopDownAnalyzerFacadeForJVM.kt:84)
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:374)
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:64)
        at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:101)
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:365)
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:130)
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:161)
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:63)
        at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.Java:108)
        at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.Java:52)
        at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:92)
        at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:451)
        at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:97)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally(IncrementalCompilerRunner.kt:218)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.access$compileIncrementally(IncrementalCompilerRunner.kt:37)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner$compile$2.invoke(IncrementalCompilerRunner.kt:80)
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:92)
        at org.jetbrains.kotlin.daemon.CompileServiceImpl.execIncrementalCompiler(CompileServiceImpl.kt:527)
        at org.jetbrains.kotlin.daemon.CompileServiceImpl.access$execIncrementalCompiler(CompileServiceImpl.kt:97)
        at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:408)
        at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:97)
        at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:909)
        at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:97)
        at org.jetbrains.kotlin.daemon.common.DummyProfiler.withMeasure(PerfUtils.kt:137)
        at org.jetbrains.kotlin.daemon.CompileServiceImpl.checkedCompile(CompileServiceImpl.kt:939)
        at org.jetbrains.kotlin.daemon.CompileServiceImpl.doCompile(CompileServiceImpl.kt:908)
        at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:407)
        at Java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at Java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
        at Java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
        at Java.base/Java.lang.reflect.Method.invoke(Method.Java:564)
        at Java.rmi/Sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.Java:359)
        at Java.rmi/Sun.rmi.transport.Transport$1.run(Transport.Java:200)
        at Java.rmi/Sun.rmi.transport.Transport$1.run(Transport.Java:197)
        at Java.base/Java.security.AccessController.doPrivileged(Native Method)
        at Java.rmi/Sun.rmi.transport.Transport.serviceCall(Transport.Java:196)
        at Java.rmi/Sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.Java:562)
        at Java.rmi/Sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.Java:796)
        at Java.rmi/Sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.Java:677)
        at Java.base/Java.security.AccessController.doPrivileged(Native Method)
        at Java.rmi/Sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.Java:676)
        at Java.base/Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1135)
        at Java.base/Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:635)
        at Java.base/Java.lang.Thread.run(Thread.Java:844)
Caused by: Java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
        at Java.base/Java.lang.Class.getDeclaredConstructors0(Native Method)
        at Java.base/Java.lang.Class.privateGetDeclaredConstructors(Class.Java:3090)
        at Java.base/Java.lang.Class.getConstructor0(Class.Java:3295)
        at Java.base/Java.lang.Class.getConstructor(Class.Java:2110)
        at Java.base/Java.util.ServiceLoader$1.run(ServiceLoader.Java:659)
        at Java.base/Java.util.ServiceLoader$1.run(ServiceLoader.Java:656)
        at Java.base/Java.security.AccessController.doPrivileged(Native Method)
        at Java.base/Java.util.ServiceLoader.getConstructor(ServiceLoader.Java:667)
        ... 57 more
Caused by: Java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
        at Java.base/Java.net.URLClassLoader.findClass(URLClassLoader.Java:466)
        at Java.base/Java.lang.ClassLoader.loadClass(ClassLoader.Java:566)
        at Java.base/Java.lang.ClassLoader.loadClass(ClassLoader.Java:499)
        ... 65 more

Heureusement (je suppose? IDK plus) après un nettoyage rapide et une invalidation/redémarrage, tout est redevenu "normal" avec les multiples exceptions initiales.

Donc, pour le moment, tout ce que je peux faire est de continuer à vérifier et à corriger jusqu'à ce qu'il ne reste plus d'erreur, et ensuite, nous verrons ... restez à l'écoute.

3
UnaDeKalamares

ENFIN! J'ai réussi à le faire compiler. Il s’agissait de vérifier chaque élément de code ... une expérience très agréable, je le recommanderai à tous mes amis.

Comme souligné par outis dans les commentaires de la question (merci!), je ne suis pas le seul à avoir connu cette erreur amusante .

Je crée ma propre réponse car je peux continuer le développement. Cependant, je ne pense pas que ce soit assez bon. Par conséquent, je ne la marque pas comme la réponse acceptée, car la sortie du compilateur est cassée et inutilisable, et elle hantera sûrement mes rêves à l'avenir.

METTRE À JOUR

J'ai récemment abordé cette question récemment et j'ai remarqué que, pour une raison quelconque, déclarer l'identifiant d'une vue avant la vue réelle (c'est-à-dire @ + id/someview) ne signifie pas que la vue elle-même peut utiliser le même identifiant (comme @ id/someview). Autant que je sache, ce problème est inexistant sans liaison de données ... alors méfiez-vous!

4
UnaDeKalamares

C'est brutal, 

La façon dont j'ai réussi à le faire fonctionner est d'installer Java 8 sur la machine locale, exécutez ./gradlew à partir de la machine locale.

De cette façon, les erreurs de compilation sont corrigées, puis compilées à partir d'Android Studio qui utilise sa propre version de Java et n'échouera plus.

0
Calin