Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incompatible with kotlinx-metadata 0.6.0 #3701

Closed
ZacSweers opened this issue Jan 12, 2023 · 40 comments · Fixed by #3862
Closed

Incompatible with kotlinx-metadata 0.6.0 #3701

ZacSweers opened this issue Jan 12, 2023 · 40 comments · Fixed by #3862

Comments

@ZacSweers
Copy link

ZacSweers commented Jan 12, 2023

kotlinx metadata 0.6.0 was released yesterday with a number of breaking API changes. It looks like Dagger doesn't currently shade this dependency, so this update breaks dagger/xprocessing internally when it runs.

Caused by: java.lang.NoSuchMethodError: 'kotlinx.metadata.jvm.KotlinClassMetadata kotlinx.metadata.jvm.KotlinClassMetadata$Companion.read(kotlinx.metadata.jvm.KotlinClassHeader)'
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.kotlin.KotlinMetadataElement$Companion.createFor(KotlinMetadataElement.kt:125)
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement$kotlinMetadata$2.invoke(JavacTypeElement.kt:57)
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement$kotlinMetadata$2.invoke(JavacTypeElement.kt:56)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement.getKotlinMetadata(JavacTypeElement.kt:56)
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement.isClass(JavacTypeElement.kt:136)
        at dagger.internal.codegen.xprocessing.XElements.getKindName(XElements.java:557)
        at dagger.internal.codegen.base.DaggerSuperficialValidation.validateTypeOf(DaggerSuperficialValidation.java:136)

Repro: ZacSweers/CatchUp#402 (run ./gradlew :app:assembleDebug --stacktrace)

@ZacSweers
Copy link
Author

They are looking to stabilize this library fwiw, and these API changes are a part of that effort. From the kotlin-lang Slack message:

image

@danysantiago
Copy link
Member

Yup - We are aware of the breaking changes, I'm working on updating xprocessing which then will help Dagger (and Room) avoid the incompatibility. Thanks!

@danysantiago
Copy link
Member

xprocessing was updated in Dagger (44b876d) fixing this issue.

@witmitchell
Copy link

Hello,
I have the same issue still occurring:

Caused by: java.lang.NoSuchMethodError: 'kotlinx.metadata.jvm.KotlinClassMetadata kotlinx.metadata.jvm.KotlinClassMetadata$Companion.read(kotlinx.metadata.jvm.KotlinClassHeader)'
at dagger.spi.shaded.androidx.room.compiler.processing.javac.kotlin.KotlinMetadataElement$Companion.createFor(KotlinMetadataElement.kt:125)
at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement$kotlinMetadata$2.invoke(JavacTypeElement.kt:57)
at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement$kotlinMetadata$2.invoke(JavacTypeElement.kt:56)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement.getKotlinMetadata(JavacTypeElement.kt:56)
at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement.isClass(JavacTypeElement.kt:143)
at dagger.internal.codegen.xprocessing.XElements.getKindName(XElements.java:558)
at dagger.internal.codegen.base.DaggerSuperficialValidation.validateTypeOf(DaggerSuperficialValidation.java:136)

I am using Android Studio: Android Studio Flamingo | 2022.2.1
sourceCompatibility = 17
targetCompatibility = 17
Gradle Tools version: 8.0.0
Kotlin version: 1.8.20
Gradle wrapper version: 8.1.1
Hilt version: 2.45

Am i missing something?

Full stack trace
error.docx

Thanks

@ZacSweers
Copy link
Author

It's fixed on the main branch but not yet released

@witmitchell
Copy link

Thanks for the quick response. Do you have any idea when it will be in release? Or do we have another(snapshot) build where the fix is present?

@ZacSweers
Copy link
Author

There are snapshots available and detailed on the dagger docs site or README. I don't know when it's going to be released, I don't work on dagger. It's generally considered poor taste to ask in OSS projects for release ETAs.

@bcorso
Copy link

bcorso commented Apr 28, 2023

@witmitchell this should now be fixed in Dagger 2.46

@hushino
Copy link

hushino commented Apr 29, 2023

Version 2.46 does not fix this problem

@ba6ba
Copy link

ba6ba commented Apr 29, 2023

Still facing this problem; issue is not fixed in v2.46 release.

@fpitpit
Copy link

fpitpit commented Apr 29, 2023

same bug with v2.46

@migueltarga
Copy link

I upgraded today and getting this error on v2.46

@raheemadamboev
Copy link

Same bug on v2.46

@danysantiago
Copy link
Member

For those who are still experiencing the problem, are you also using Room? If so which version?

Can you also confirm that the stacktrace contains dagger.spi.shaded.androidx.room.compiler.processing.javac.kotlin.KotlinMetadataElement and indicator that the error is coming from Dagger and not androidx.room.compiler.processing.javac.kotlin.KotlinMetadataElement which would indicate the error is coming from Room (notice the start of the packages are different).

@lwasyl
Copy link

lwasyl commented May 1, 2023

That's right, Room is present in the stacktrace. This is with most recent stable Room release 2.5.1, and the error appears only after updating Dagger to 2.46

Caused by: com.sun.tools.javac.processing.AnnotationProcessingError: java.lang.NoSuchMethodError: 'kotlinx.metadata.jvm.KotlinClassMetadata kotlinx.metadata.jvm.KotlinClassMetadata$Companion.read(kotlin.Metadata)'
        at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:1035)
        at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:939)
        at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1267)
        at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1382)
        at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1234)
        ... 33 more
Caused by: java.lang.NoSuchMethodError: 'kotlinx.metadata.jvm.KotlinClassMetadata kotlinx.metadata.jvm.KotlinClassMetadata$Companion.read(kotlin.Metadata)'
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.kotlin.KmClassContainer$Companion.createFor(KotlinClassMetadataUtils.kt:161)
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement$kotlinMetadata$2.invoke(JavacTypeElement.kt:57)
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement$kotlinMetadata$2.invoke(JavacTypeElement.kt:56)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement.getKotlinMetadata(JavacTypeElement.kt:56)
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacMethodElement$kotlinMetadata$2.invoke(JavacMethodElement.kt:75)
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacMethodElement$kotlinMetadata$2.invoke(JavacMethodElement.kt:74)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacMethodElement.getKotlinMetadata(JavacMethodElement.kt:74)
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacMethodElement.isSuspendFunction(JavacMethodElement.kt:117)
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacMethodElement$returnType$2.invoke(JavacMethodElement.kt:89)
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacMethodElement$returnType$2.invoke(JavacMethodElement.kt:86)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacMethodElement.getReturnType(JavacMethodElement.kt:86)
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacMethodElement.getReturnType(JavacMethodElement.kt:34)
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacAnnotationValue.<init>(JavacAnnotationValue.kt:38)
        at dagger.spi.shaded.androidx.room.compiler.processing.compat.XConverters.toXProcessing(XConverters.kt:150)
        at dagger.internal.codegen.base.DaggerSuperficialValidation.lambda$getDefaultValues$6(DaggerSuperficialValidation.java:408)
        at dagger.internal.codegen.base.DaggerSuperficialValidation.getDefaultValues(DaggerSuperficialValidation.java:409)
        at dagger.internal.codegen.base.DaggerSuperficialValidation.validateAnnotation(DaggerSuperficialValidation.java:395)
        at dagger.internal.codegen.base.DaggerSuperficialValidation.validateAnnotations(DaggerSuperficialValidation.java:389)
        at dagger.internal.codegen.base.DaggerSuperficialValidation.validateAnnotationsOf(DaggerSuperficialValidation.java:208)
        at dagger.internal.codegen.base.DaggerSuperficialValidation.validateElement(DaggerSuperficialValidation.java:263)
        at dagger.internal.codegen.processingstep.SuperficialValidator.validationExceptionsUncached(SuperficialValidator.java:58)
        at dagger.internal.codegen.processingstep.SuperficialValidator.throwIfNearestEnclosingTypeNotValid(SuperficialValidator.java:47)
        at dagger.internal.codegen.processingstep.TypeCheckingProcessingStep.lambda$process$0(TypeCheckingProcessingStep.java:80)
        at com.google.common.collect.SingletonImmutableBiMap.forEach(SingletonImmutableBiMap.java:68)
        at dagger.internal.codegen.processingstep.TypeCheckingProcessingStep.process(TypeCheckingProcessingStep.java:70)
        at dagger.internal.codegen.processingstep.TypeCheckingProcessingStep.process(TypeCheckingProcessingStep.java:48)
        at dagger.spi.shaded.androidx.room.compiler.processing.XProcessingStep.process(XProcessingStep.kt:59)
        at dagger.spi.shaded.androidx.room.compiler.processing.CommonProcessorDelegate.processRound(XBasicAnnotationProcessor.kt:125)
        at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacBasicAnnotationProcessor.process(JavacBasicAnnotationProcessor.kt:71)
        at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.process(incrementalProcessors.kt:90)
        at org.jetbrains.kotlin.kapt3.base.ProcessorWrapper.process(annotationProcessing.kt:197)
        at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:1023)
        ... 37 more

@almeric
Copy link

almeric commented May 1, 2023

Same issue, not using room. But room is mentioned in the stacktrace:

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.KaptWithoutKotlincTask$KaptExecutionWorkAction
   > 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:149)
	at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:147)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:135)
	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:74)
	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.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:42)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:337)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:324)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:317)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:303)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:463)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:380)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:49)
Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction
	at org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:283)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.lambda$waitForItemsAndGatherFailures$2(DefaultAsyncWorkTracker.java:130)
	at org.gradle.internal.Factories$1.create(Factories.java:31)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:321)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:304)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLock(DefaultWorkerLeaseService.java:309)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:126)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:92)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForAll(DefaultAsyncWorkTracker.java:78)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForCompletion(DefaultAsyncWorkTracker.java:66)
	at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:250)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
	at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:227)
	at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:210)
	at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:193)
	at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:166)
	at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:105)
	at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:44)
	at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:59)
	at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
	at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:56)
	at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44)
	at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:67)
	at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:37)
	at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
	at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
	at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
	at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:50)
	at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:28)
	at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.executeDelegateBroadcastingChanges(CaptureStateAfterExecutionStep.java:100)
	at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:72)
	at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:50)
	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:40)
	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:29)
	at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:166)
	at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:70)
	at org.gradle.internal.Either$Right.fold(Either.java:175)
	at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59)
	at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:68)
	at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:46)
	at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36)
	at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25)
	at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
	at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:91)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:55)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:37)
	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:65)
	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:36)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
	at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:76)
	at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:37)
	at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:94)
	at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:49)
	at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:71)
	at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:45)
	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNonEmptySources(SkipEmptyWorkStep.java:177)
	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:81)
	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:53)
	at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32)
	at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
	at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:36)
	at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:23)
	at org.gradle.internal.execution.steps.CleanupStaleOutputsStep.execute(CleanupStaleOutputsStep.java:75)
	at org.gradle.internal.execution.steps.CleanupStaleOutputsStep.execute(CleanupStaleOutputsStep.java:41)
	at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:32)
	at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:287)
	at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
	at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:21)
	at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
	at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
	at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:47)
	at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:34)
	at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:64)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:146)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:135)
	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:74)
	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.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:42)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:337)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:324)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:317)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:303)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:463)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:380)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:49)
Caused by: java.lang.reflect.InvocationTargetException
	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 org.jetbrains.kotlin.gradle.internal.KaptExecution.run(KaptWithoutKotlincTask.kt:311)
	at org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction.execute(KaptWithoutKotlincTask.kt:257)
	at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
	at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:54)
	at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:48)
	at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)
	at org.gradle.workers.internal.AbstractClassLoaderWorker.executeInClassLoader(AbstractClassLoaderWorker.java:48)
	at org.gradle.workers.internal.IsolatedClassloaderWorker.run(IsolatedClassloaderWorker.java:49)
	at org.gradle.workers.internal.IsolatedClassloaderWorker.run(IsolatedClassloaderWorker.java:30)
	at org.gradle.workers.internal.WorkerDaemonServer.run(WorkerDaemonServer.java:96)
	at org.gradle.workers.internal.WorkerDaemonServer.run(WorkerDaemonServer.java:65)
	at org.gradle.process.internal.worker.request.WorkerAction$1.call(WorkerAction.java:138)
	at org.gradle.process.internal.worker.child.WorkerLogEventListener.withWorkerLoggingProtocol(WorkerLogEventListener.java:41)
	at org.gradle.process.internal.worker.request.WorkerAction.run(WorkerAction.java:135)
	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 org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:49)
Caused by: java.lang.reflect.InvocationTargetException
	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 org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:90)
	at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing$default(annotationProcessing.kt:31)
	at org.jetbrains.kotlin.kapt3.base.Kapt.kapt(Kapt.kt:47)
	... 27 more
Caused by: com.sun.tools.javac.processing.AnnotationProcessingError: java.lang.NoSuchMethodError: 'kotlinx.metadata.jvm.KotlinClassMetadata kotlinx.metadata.jvm.KotlinClassMetadata$Companion.read(kotlin.Metadata)'
	at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:997)
	at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:901)
	at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1227)
	at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1340)
	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1254)
	... 33 more
Caused by: java.lang.NoSuchMethodError: 'kotlinx.metadata.jvm.KotlinClassMetadata kotlinx.metadata.jvm.KotlinClassMetadata$Companion.read(kotlin.Metadata)'
	at dagger.spi.shaded.androidx.room.compiler.processing.javac.kotlin.KmClassContainer$Companion.createFor(KotlinClassMetadataUtils.kt:161)
	at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement$kotlinMetadata$2.invoke(JavacTypeElement.kt:57)
	at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement$kotlinMetadata$2.invoke(JavacTypeElement.kt:56)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement.getKotlinMetadata(JavacTypeElement.kt:56)
	at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement$type$2.invoke(JavacTypeElement.kt:198)
	at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement$type$2.invoke(JavacTypeElement.kt:195)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement.getType(JavacTypeElement.kt:195)
	at dagger.spi.shaded.androidx.room.compiler.processing.javac.JavacTypeElement.getType(JavacTypeElement.kt:44)
	at dagger.hilt.android.processor.internal.viewmodel.ViewModelMetadata$Companion.create$java_dagger_hilt_android_processor_internal_viewmodel_processor_lib(ViewModelMetadata.kt:47)
	at dagger.hilt.android.processor.internal.viewmodel.ViewModelProcessor.processEach(ViewModelProcessor.kt:47)
	at dagger.hilt.processor.internal.BaseProcessor.process(BaseProcessor.java:201)
	at dagger.hilt.processor.internal.BaseProcessor.process(BaseProcessor.java:171)
	at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.process(incrementalProcessors.kt:90)
	at org.jetbrains.kotlin.kapt3.base.ProcessorWrapper.process(annotationProcessing.kt:197)
	at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:985)
	... 37 more

@danysantiago
Copy link
Member

Its as if something is pinning kotlinx-metadata to something older than 0.6.0.

Can you try forcing the usage of 0.6.0 by explicitly declaring it in your dependencies, for example kapt "org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.6.0" to make sure that version of kotlinx-metadata is used during annotation processing in Kotlin.

It would also be good to check the projects dependency tree to verify the right kotlinx-metadata is being used, see https://docs.gradle.org/current/userguide/viewing_debugging_dependencies.html for info on how to check dependencies in Gradle.

Lastly if there is a repro project we can try, that would be amazing, since our Gradle integration projects in https://github.com/google/dagger/tree/master/javatests/artifacts didn't reproduce this.

@ZacSweers
Copy link
Author

ZacSweers commented May 1, 2023

We see a slightly different issue when forcing metadata 0.6.0

> Task :apps:app-di:kaptInternalDebugKotlin
warning: Unable to read Kotlin metadata due to unsupported metadata kind: kotlinx.metadata.jvm.KotlinClassMetadata$SyntheticClass@1154ac87.
warning: Unable to read Kotlin metadata due to unsupported metadata kind: kotlinx.metadata.jvm.KotlinClassMetadata$SyntheticClass@19d15fd2.
warning: Unable to read Kotlin metadata due to unsupported metadata kind: kotlinx.metadata.jvm.KotlinClassMetadata$SyntheticClass@2c6bccf3.
warning: Unable to read Kotlin metadata due to unsupported metadata kind: kotlinx.metadata.jvm.KotlinClassMetadata$SyntheticClass@44c53026.
warning: Unable to read Kotlin metadata due to unsupported metadata kind: kotlinx.metadata.jvm.KotlinClassMetadata$SyntheticClass@63ce671.
warning: Unable to read Kotlin metadata due to unsupported metadata kind: kotlinx.metadata.jvm.KotlinClassMetadata$SyntheticClass@74dd0d76.

It does appear to finish the build successfully, but the above warnings are new and seem concerning

@almeric
Copy link

almeric commented May 2, 2023

Bare bones repro app (if you downgrade the dagger dependency to 2.45 it works):

MyApplication.zip

@danysantiago
Copy link
Member

@ZacSweers: The warning is coming from here when a metadata for a synthetic class is found. It is probably harmless but I can see the warning being annoying... Even though these classes rarely show up in the AST they can appear in Kotlin, see this comment for example: #2379 (comment). I think this is a bit of a regression, Dagger used to error out when a synthetic class metadata was found, that was later fixed (relaxing the check) but recently Dagger switched to using xprocessing for metadata and that logic had a warning, hence its back in warning form.

@almeric Thank you sooo much for the repro. I am a bit baffled as to what is going on but I was able to pin-point the issue to Kotlin's new-ish jvmToolchain usage. In the provided project if you remove the jvmToolchain DSL lines and instead configure the target JVM for Kotlin tasks the 'old way':

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
    kotlinOptions {
        jvmTarget = "11"
    }
}

The project will build and right kotlinx-metadata-jvm will be in the classpath. Alternative, upgrading the toolchain version to 18 (only tried that version) also worked for me, so there is some classpath shenanigans occurring when configuring Kotlin's JDK via the jvmToolchain DSL APIs. If you really need to stick with JVM 11 then its worth filing a bug to the Kotlin team at https://youtrack.jetbrains.com/issues/KT.

For others who are using Room 2.5.1 with Dagger / Hilt 2.46 then the issue is that Dagger / Hilt upgrades kotlinx-metadata-jvm to a version incompatible with Room 2.5.1 and instead Room 2.6.0-alpha01 or higher needs to be used.

@almeric
Copy link

almeric commented May 2, 2023

Great find @danysantiago! Thanks a bunch for the detailed analysis!

@witmitchell
Copy link

Thanks @danysantiago the: For others who are using Room 2.5.1 with Dagger / Hilt 2.46 then the issue is that Dagger / Hilt upgrades kotlinx-metadata-jvm to a version incompatible with Room 2.5.1 and instead Room 2.6.0-alpha01 or higher needs to be used. fixed it for me.

@hushino
Copy link

hushino commented May 5, 2023

Upgrade room to alpha is not a solution for me and not fix this, declaring impl of metadata no work, downgrade hilt or invalidate cache, no work, only a rollback from agp 8 to 7 and kotlin to 1.8.10 makes the app compile

@clarkshu1016
Copy link

2.46 not fixed the issue, please reopen the ticket

@Aidanvii7
Copy link

I'm still having this same error with:

  • Dagger 2.46
  • Room 2.6.0-alpha01
  • AGP 8.0.1
  • jvmToolchain(11)

If I remove jvmToolchain(11) and use kotlinOptions { jvmTarget = "11" }, then I can do a debug build just fine, but R8 fails with release builds with com.android.tools.r8.utils.b: Missing class java.lang.invoke.StringConcatFactory

@danysantiago
Copy link
Member

danysantiago commented May 9, 2023

We'll revisit this, we are going to probably shade / jarjar kotlinx-metadata-jvm while Jetbrains stabilizes the APIs and it would avoid issues with other libraries using it since its a transitive dependency for Dagger / Hilt.

@danysantiago danysantiago reopened this May 9, 2023
copybara-service bot pushed a commit that referenced this issue May 9, 2023
RELNOTES=Fixes #3701: Shade kotlinx metadata in Dagger's artifacts.
PiperOrigin-RevId: 530726420
copybara-service bot pushed a commit that referenced this issue May 10, 2023
This CL also removes an extra version of auto-common that we jarjared and shaded into the Hilt compiler artifacts. In particular, since Hilt's compiler artifacts depend transitively on the dagger-spi artifact, we can shade our auto-common references to use the version of auto-common shaded into dagger-spi instead of creating another version of the shaded classes in the hilt compiler artifacts.

I've also updated the `gen_maven_artifact` macro to exclude are shaded dependencies from the `artifact_target_maven_deps` since that list is supposed to mimic our pom file dependencies.

RELNOTES=Fixes #3701: Shade kotlinx metadata in Dagger's artifacts.
PiperOrigin-RevId: 530726420
copybara-service bot pushed a commit that referenced this issue May 10, 2023
This CL also removes an extra version of auto-common that we jarjared and shaded into the Hilt compiler artifacts. In particular, since Hilt's compiler artifacts depend transitively on the dagger-spi artifact, we can shade our auto-common references to use the version of auto-common shaded into dagger-spi instead of creating another version of the shaded classes in the hilt compiler artifacts.

I've also updated the `gen_maven_artifact` macro to exclude are shaded dependencies from the `artifact_target_maven_deps` since that list is supposed to mimic our pom file dependencies.

RELNOTES=Fixes #3701: Shade kotlinx metadata in Dagger's artifacts.
PiperOrigin-RevId: 530726420
copybara-service bot pushed a commit that referenced this issue May 10, 2023
This CL also removes an extra version of auto-common that we jarjared and shaded into the Hilt compiler artifacts. In particular, since Hilt's compiler artifacts depend transitively on the dagger-spi artifact, we can shade our auto-common references to use the version of auto-common shaded into dagger-spi instead of creating another version of the shaded classes in the hilt compiler artifacts.

I've also updated the `gen_maven_artifact` macro to exclude are shaded dependencies from the `artifact_target_maven_deps` since that list is supposed to mimic our pom file dependencies.

RELNOTES=Fixes #3701: Shade kotlinx metadata in Dagger's artifacts.
PiperOrigin-RevId: 530726420
copybara-service bot pushed a commit that referenced this issue May 10, 2023
This CL also removes an extra version of auto-common that we jarjared and shaded into the Hilt compiler artifacts. In particular, since Hilt's compiler artifacts depend transitively on the dagger-spi artifact, we can shade our auto-common references to use the version of auto-common shaded into dagger-spi instead of creating another version of the shaded classes in the hilt compiler artifacts.

I've also updated the `gen_maven_artifact` macro to exclude are shaded dependencies from the `artifact_target_maven_deps` since that list is supposed to mimic our pom file dependencies.

RELNOTES=Fixes #3701: Shade kotlinx metadata in Dagger's artifacts.
PiperOrigin-RevId: 530726420
copybara-service bot pushed a commit that referenced this issue May 10, 2023
This CL also removes an extra version of auto-common that we jarjared and shaded into the Hilt compiler artifacts. In particular, since Hilt's compiler artifacts depend transitively on the dagger-spi artifact, we can shade our auto-common references to use the version of auto-common shaded into dagger-spi instead of creating another version of the shaded classes in the hilt compiler artifacts.

I've also updated the `gen_maven_artifact` macro to exclude are shaded dependencies from the `artifact_target_maven_deps` since that list is supposed to mimic our pom file dependencies.

RELNOTES=Fixes #3701: Shade kotlinx metadata in Dagger's artifacts.
PiperOrigin-RevId: 530726420
copybara-service bot pushed a commit that referenced this issue May 10, 2023
This CL also removes an extra version of auto-common that we jarjared and shaded into the Hilt compiler artifacts. In particular, since Hilt's compiler artifacts depend transitively on the dagger-spi artifact, we can shade our auto-common references to use the version of auto-common shaded into dagger-spi instead of creating another version of the shaded classes in the hilt compiler artifacts.

I've also updated the `gen_maven_artifact` macro to exclude are shaded dependencies from the `artifact_target_maven_deps` since that list is supposed to mimic our pom file dependencies.

RELNOTES=Fixes #3701: Shade kotlinx metadata in Dagger's artifacts.
PiperOrigin-RevId: 530726420
copybara-service bot pushed a commit that referenced this issue May 10, 2023
This CL also removes an extra version of auto-common that we jarjared and shaded into the Hilt compiler artifacts. In particular, since Hilt's compiler artifacts depend transitively on the dagger-spi artifact, we can shade our auto-common references to use the version of auto-common shaded into dagger-spi instead of creating another version of the shaded classes in the hilt compiler artifacts.

I've also updated the `gen_maven_artifact` macro to exclude are shaded dependencies from the `artifact_target_maven_deps` since that list is supposed to mimic our pom file dependencies.

RELNOTES=Fixes #3701: Shade kotlinx metadata in Dagger's artifacts.
PiperOrigin-RevId: 530726420
@Bhuvanaarkala07
Copy link

What is the solution or this? I have tried the suggestions mentioned above but nothing worked. Please can you suggest the right solution for this?

@bcorso
Copy link

bcorso commented May 11, 2023

@Bhuvanaarkala07 we have shaded the dependency within Dagger, which should solve this issue, but it's currently only available in the snapshot.

I plan to do an official release (v2.46.1) later today.

@Bhuvanaarkala07
Copy link

@bcorso - Is the release done today?

@bcorso
Copy link

bcorso commented May 12, 2023

No, it will be available in https://github.com/google/dagger/releases once it's done.

@bcorso
Copy link

bcorso commented May 12, 2023

@Bhuvanaarkala07 Okay, it should be released now https://github.com/google/dagger/releases/tag/dagger-2.46.1.

Let us know if you're still running into issues.

@Bhuvanaarkala07
Copy link

@bcorso - Still Iam facing same issue, after updating the dagger version to latest.

These are the versions I am using,
daggerVersion = '2.46.1'
squareVersion = '2.9.0'
glideVersion = '4.12.0'
lifecycle_version = "2.6.1"
androidx_appcompat_version = "1.6.1"
androidx_expresso_version = "3.5.1"
roomVersion = "2.5.1"
androidx_test_version = "1.5.1"
nav_version = "2.2.1"
firebase_version = "21.1.0"
firebase_messaging_version = "23.1.2"

@bcorso
Copy link

bcorso commented May 13, 2023

Hmm, I've checked the class files for Dagger 2.46.1 and they look like they're correctly pointing to the shaded deps now.

@Bhuvanaarkala07, can you post the exact error message you are seeing? My guess is that it may be from a different library other than Dagger, e.g. Room is also shading the kotlinx-jvm dependency for the same reason so you may need to update that as well.

@jolaf
Copy link

jolaf commented May 13, 2023

@Bhuvanaarkala07 Okay, it should be released now https://github.com/google/dagger/releases/tag/dagger-2.46.1.

Thanks, that fixed the issue for me.

@balflear
Copy link

If you are using Hilt, update it to 2.46.1 and it will work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.