airbnb / epoxy

Epoxy is an Android library for building complex screens in a RecyclerView
https://goo.gl/eIK82p
Apache License 2.0
8.51k stars 727 forks source link

Error building when model class has @Serializable annotation #1059

Closed jrocharodrigues closed 4 years ago

jrocharodrigues commented 4 years ago

Hi,

Thank for the great library,

I'm having an issue in my project, when i use the Automatic based on naming pattern to generate the model class for epoxy, i cannot use a data class with the @Serializable annotation on the layout databinding. In that case the build fails with:

error: EpoxyProcessorException: resolveDataBindingClassesAndWriteJava failed com.airbnb.epoxy.processor.EpoxyProcessorException: resolveDataBindingClassesAndWriteJava failed at com.airbnb.epoxy.processor.Logger.logError(Logger.kt:63) at com.airbnb.epoxy.processor.Asyncable$filter$2.invokeSuspend(Asyncable.kt:71) at com.airbnb.epoxy.processor.Asyncable$filter$2.invoke(Asyncable.kt) at com.airbnb.epoxy.processor.Logger.measure(Logger.kt:78) at com.airbnb.epoxy.processor.Asyncable$DefaultImpls.filter(Asyncable.kt:65) at com.airbnb.epoxy.processor.BaseProcessor.filter(BaseProcessor.kt:31) at com.airbnb.epoxy.processor.Asyncable$DefaultImpls.filter$default(Asyncable.kt:61) at com.airbnb.epoxy.processor.DataBindingProcessor.resolveDataBindingClassesAndWriteJava(DataBindingProcessor.kt:115) at com.airbnb.epoxy.processor.DataBindingProcessor.processRound(DataBindingProcessor.kt:102) at com.airbnb.epoxy.processor.BaseProcessor$process$1$1.invokeSuspend(BaseProcessor.kt:122) at com.airbnb.epoxy.processor.BaseProcessor$process$1$1.invoke(BaseProcessor.kt) at com.airbnb.epoxy.processor.Logger.measure(Logger.kt:78) at com.airbnb.epoxy.processor.Logger.measure$default(Logger.kt:75) at com.airbnb.epoxy.processor.BaseProcessor$process$1.invokeSuspend(BaseProcessor.kt:121) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665) Caused by: com.sun.tools.javac.code.Symbol$CompletionFailure: class file for dagger.android.ContributesAndroidInjector not found

Here's my layout: `<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">

<data>

    <variable
        name="recommendation"
        type="com.teste.myapp.models.Recommendation" />

</data>

<com.google.android.material.card.MaterialCardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardCornerRadius="0dp">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/poster"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:contentDescription="@{recommendation.title}"
            app:imageUrl="@{recommendation.imgUrl}"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintDimensionRatio="H,16:9"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>

</com.google.android.material.card.MaterialCardView>

`

And here's the code for my data class: @Serializable data class Recommendation( val title: String val imgUrl: String, )

If i remove the annotation everything works fine. If i build the model class manually using the @EpoxyModelClass with the same model it also works.

Is there any way i can use the AutoModel Generation without having to remove the @Serializable annotation from my data class?

Thanks in advance

elihart commented 4 years ago

Is that the entire stacktrace? it seems like some of it may be missing, please share the full trace if possible.

Does the issue go away if you disable parallel epoxy processing and/or timing?

jrocharodrigues commented 4 years ago

Hi thanks for the answer, sorry for not putting the full stack trace.

I've tried with different combinations of parallel epoxy processing and/or timing enabled and disable but the result is the same. Let me know if you need more info.

Here's the full stack trace :

> Task :app:kaptDebugKotlin FAILED
error: EpoxyProcessorException: resolveDataBindingClassesAndWriteJava failed
  com.airbnb.epoxy.processor.EpoxyProcessorException: resolveDataBindingClassesAndWriteJava failed
        at com.airbnb.epoxy.processor.Logger.logError(Logger.kt:63)
        at com.airbnb.epoxy.processor.Asyncable$filter$2.invokeSuspend(Asyncable.kt:71)
        at com.airbnb.epoxy.processor.Asyncable$filter$2.invoke(Asyncable.kt)
        at com.airbnb.epoxy.processor.Logger.measure(Logger.kt:78)
        at com.airbnb.epoxy.processor.Asyncable$DefaultImpls.filter(Asyncable.kt:65)
        at com.airbnb.epoxy.processor.BaseProcessor.filter(BaseProcessor.kt:31)
        at com.airbnb.epoxy.processor.Asyncable$DefaultImpls.filter$default(Asyncable.kt:61)
        at com.airbnb.epoxy.processor.DataBindingProcessor.resolveDataBindingClassesAndWriteJava(DataBindingProcessor.kt:115)
        at com.airbnb.epoxy.processor.DataBindingProcessor.processRound(DataBindingProcessor.kt:102)
        at com.airbnb.epoxy.processor.BaseProcessor$process$1$1.invokeSuspend(BaseProcessor.kt:122)
        at com.airbnb.epoxy.processor.BaseProcessor$process$1$1.invoke(BaseProcessor.kt)
        at com.airbnb.epoxy.processor.Logger.measure(Logger.kt:78)
        at com.airbnb.epoxy.processor.Logger.measure$default(Logger.kt:75)
        at com.airbnb.epoxy.processor.BaseProcessor$process$1.invokeSuspend(BaseProcessor.kt:121)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
  Caused by: com.sun.tools.javac.code.Symbol$CompletionFailure: class file for dagger.producers.Producer not found
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)

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

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:kaptDebugKotlin'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:205)
        at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:263)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:203)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:184)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:372)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:359)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:352)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:338)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
        at org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:354)
        at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:142)
        at org.gradle.internal.work.DefaultAsyncWorkTracker.access$000(DefaultAsyncWorkTracker.java:34)
        at org.gradle.internal.work.DefaultAsyncWorkTracker$1.run(DefaultAsyncWorkTracker.java:106)
        at org.gradle.internal.Factories$1.create(Factories.java:26)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:260)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withoutProjectLock(DefaultWorkerLeaseService.java:171)
        at org.gradle.internal.work.DefaultWorkerLeaseService.withoutProjectLock(DefaultWorkerLeaseService.java:165)
        at org.gradle.internal.work.StopShieldingWorkerLeaseService.withoutProjectLock(StopShieldingWorkerLeaseService.java:95)
        at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:102)
        at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForAll(DefaultAsyncWorkTracker.java:80)
        at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForCompletion(DefaultAsyncWorkTracker.java:68)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.run(ExecuteActionsTaskExecuter.java:576)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:553)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:536)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$300(ExecuteActionsTaskExecuter.java:109)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:276)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:265)
        at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$0(ExecuteStep.java:32)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:32)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26)
        at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:63)
        at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:35)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:49)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:34)
        at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:43)
        at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73)
        at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54)
        at org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:34)
        at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:44)
        at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:54)
        at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:38)
        at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49)
        at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:153)
        at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:67)
        at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:41)
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:44)
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:33)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:92)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:85)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:39)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:76)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:94)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:49)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:79)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:53)
        at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:74)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:78)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:78)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:39)
        at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:40)
        at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:28)
        at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:192)
        ... 30 more
Caused by: java.lang.reflect.InvocationTargetException
        at org.jetbrains.kotlin.gradle.internal.KaptExecution.run(KaptWithoutKotlincTask.kt:158)
        at org.gradle.workers.internal.AdapterWorkAction.execute(AdapterWorkAction.java:50)
        at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:50)
        at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:63)
        at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:59)
        at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:98)
        at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:59)
        at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
        at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
        at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
        at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:53)
        at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$2(DefaultWorkerExecutor.java:200)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
        at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)
        ... 3 more
Caused by: org.jetbrains.kotlin.kapt3.base.util.KaptBaseError: Error while annotation processing
        at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:126)
        at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing$default(annotationProcessing.kt:35)
        at org.jetbrains.kotlin.kapt3.base.Kapt.kapt(Kapt.kt:45)
        ... 25 more
elihart commented 4 years ago

the root issue seems to be Caused by: com.sun.tools.javac.code.Symbol$CompletionFailure: class file for dagger.producers.Producer not found, but the stacktrace seems to be missing details about where that is accessed.

I don't know why a dagger Producer would be accessed, or why @Serializable would affect this. The only thing I can think to try is whether you can make sure dagger.producers.Producer is on the compile class path.

Can you share a complete stacktrace when the parallel processing and timing options are disabled? It may be able to see the root cause then

jrocharodrigues commented 4 years ago

I captured that one with by running ./gradlew assembleDebug --stacktrace with timing and parallel off.

Can you tell me how can I capture a (more) complete stack trace?

Thanks again

jrocharodrigues commented 4 years ago

Hi, I've found the problem, or at least an workaround for it.

The class with the @Serialization annotation was part of a different module, which had an dep for a the serialization lib org.jetbrains.kotlinx:kotlinx-serialization-runtime. For some reason the processor was not seeing the classes from the deps from that module. I've added the org.jetbrains.kotlinx:kotlinx-serialization-runtime dep to the main app module and now it all works.

Do you want me to keep the issue open for you to make more analysis or should i close it?

Thanks for the help.

elihart commented 4 years ago

good to know, I think you can close this. I don't think there is anything we can fix from the Epoxy side if the issue is that the class needs to be present in the compile classpath.

jrocharodrigues commented 4 years ago

Ok thanks for the help

RageshAntony commented 3 years ago

I've added the org.jetbrains.kotlinx:kotlinx-serialization-runtime dep to the main app module and now it all works.

@jrocharodrigues Will you pls elobrate the process ?

jrocharodrigues commented 3 years ago

@RageshAntony just added org.jetbrains.kotlinx:kotlinx-serialization-runtime to the dependecies list on the multiplatform module build.gradle, to the androidMain section like so

  androidMain {
            dependencies {
               ...

                api "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serialization_version"

               ..
            }
        }
RageshAntony commented 3 years ago

api "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serialization_version"

getting this error @jrocharodrigues

Duplicate class kotlinx.serialization.BinaryFormat found in modules kotlinx-serialization-core-jvm-1.0.1 (org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.0.1) and kotlinx-serialization-runtime-jvm-1.0-M1-1.4.0-rc (org.jetbrains.kotlinx:kotlinx-serialization-runtime-jvm:1.0-M1-1.4.0-rc) Duplicate class kotlinx.serialization.Contextual found in modules kotlinx-serialization-core-jvm-1.0.1 (org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.0.1) and kotlinx-serialization-runtime-jvm-1.0-M1-1.4.0-rc (org.jetbrains.kotlinx:kotlinx-serialization-runtime-jvm:1.0-M1-1.4.0-rc) ....................

RageshAntony commented 3 years ago

gradles

https://gist.github.com/RageshAntony/42b22f2e907cf72c37b420e96195a1aa

jrocharodrigues commented 3 years ago

I'm still using an older version (0.2.0) of the serialization plugin than you are. Probably in you case in need to add org.jetbrains.kotlinx:kotlinx-serialization-json:1.0.1 to the androidMain section instead of org.jetbrains.kotlinx:kotlinx-serialization-runtime. But i cannot guarantee that it will work since i've not tested with that version of the serialization lib.

RageshAntony commented 3 years ago

I'm still using an older version (0.2.0) of the serialization plugin than you are. Probably in you case in need to add org.jetbrains.kotlinx:kotlinx-serialization-json:1.0.1 to the androidMain section instead of org.jetbrains.kotlinx:kotlinx-serialization-runtime. But i cannot guarantee that it will work since i've not tested with that version of the serialization lib.

I added to -json:1.0.1 AndroidMain , duplication issue gone . But still got binding error

So I also added the ..-json:1.0.1 to AndroidApp app.gradle ...

Issue resolved and model classes generated !!!!! thanks @jrocharodrigues

BUT...

In model builder , for data class , I am getting this error : Cannot access class 'in.techrova.kmmapplication.shared.data.model.github.GitHubJob'. Check your module classpath for missing or conflicting dependencies

image

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"

    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>
    <variable
        name="job"
        type="in.techrova.kmmapplication.shared.data.model.github.GitHubJob" />
    </data>

please help me