Hi all, i'm facing issue with dagger after updating android studio to 3.5, this is the stacktrace
e: [kapt] An exception occurred: java.lang.IllegalArgumentException: not a valid name: <set-?>Provider
at com.squareup.javapoet.Util.checkArgument(Util.java:53)
at com.squareup.javapoet.FieldSpec.builder(FieldSpec.java:91)
at dagger.internal.codegen.MembersInjectorGenerator.write(MembersInjectorGenerator.java:157)
at dagger.internal.codegen.MembersInjectorGenerator.write(MembersInjectorGenerator.java:66)
at dagger.internal.codegen.SourceFileGenerator.generate(SourceFileGenerator.java:78)
at dagger.internal.codegen.InjectBindingRegistryImpl$BindingsCollection.generateBindings(InjectBindingRegistryImpl.java:89)
at dagger.internal.codegen.InjectBindingRegistryImpl.generateSourcesForRequiredBindings(InjectBindingRegistryImpl.java:183)
at dagger.internal.codegen.ComponentProcessor.postRound(ComponentProcessor.java:189)
at dagger.shaded.auto.common.BasicAnnotationProcessor.process(BasicAnnotationProcessor.java:183)
at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.process(incrementalProcessors.kt)
at org.jetbrains.kotlin.kapt3.base.ProcessorWrapper.process(annotationProcessing.kt:132)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:794)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:705)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91)
at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1035)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1176)
at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170)
at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1068)
at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:80)
at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing$default(annotationProcessing.kt:36)
at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.runAnnotationProcessing(Kapt3Extension.kt:223)
at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.analysisCompleted(Kapt3Extension.kt:187)
at org.jetbrains.kotlin.kapt3.ClasspathBasedKapt3Extension.analysisCompleted(Kapt3Extension.kt:98)
at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM$analyzeFilesWithJavaIntegration$2.invoke(TopDownAnalyzerFacadeForJVM.kt:95)
at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.kt:105)
at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration$default(TopDownAnalyzerFacadeForJVM.kt:80)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:398)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:65)
at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:107)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:389)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:118)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:166)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:56)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:84)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:42)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:104)
at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$1$1$2.invoke(CompileServiceImpl.kt:442)
at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$1$1$2.invoke(CompileServiceImpl.kt:102)
at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:1005)
at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:102)
at org.jetbrains.kotlin.daemon.common.DummyProfiler.withMeasure(PerfUtils.kt:138)
at org.jetbrains.kotlin.daemon.CompileServiceImpl.checkedCompile(CompileServiceImpl.kt:1047)
at org.jetbrains.kotlin.daemon.CompileServiceImpl.doCompile(CompileServiceImpl.kt:1004)
at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:441)
at sun.reflect.GeneratedMethodAccessor103.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
at sun.rmi.transport.Transport$1.run(Transport.java:200)
at sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Dagger version: 2.24
Same on dagger 2.16
Related issue: https://issuetracker.google.com/issues/133461087
I get the same error on 2.24 too.
Same error since moved to Android Studio 3.5, it's only triggered while running tests from inside the IDE. Console is fine.
I encountered the same error after migrating to Android Studio 3.5 for 2.24 version. It seems to be because of changes in kapt.
Same issue here using dagger 2.11.
Same issue here using dagger 2.19.
avoiding any usages of @set:Inject can be used as a workaround
avoiding any usages of
@set:Injectcan be used as a workaround
I don't have any @set:Inject, other suggestions?
For me this did not work:
@set:Inject
lateinit var something: Something
This did not work either:
var something: Something? = null
@Inject set
But, this did:
var something: Something? = null
@Inject set(value) {
field = value
}
IDE will complain that the full declaration is redundant and can be simplified, however this was the only way that kapt accepted :)
@TheMedo thanks! It works.
It seems that before the update @Inject set was shorthand for field = value but this magic is now removed (more explicit).
You can also use:
@Inject
@JvmField
var something: Something? = null
Thanks to @mennovogel
For what it's worth I was able to get it to compile if i downgrade from gradle plugin 3.5.0 to 3.4.2 as a temporary developer fix to unblock while we try the above
@JvmField
change
Seems that i have managed it to work on:
android studio 3.5.0
dagger version 2.24,
gradle plugin 2.5.0
wrapper 5.4.1
Just double check that your project neither use @set:Inject or @Inject set structures.
@Inject
lateinit var: Some
would be enough
Seems that i have managed it to work on:
android studio 3.5.0
dagger version 2.24,
gradle plugin 2.5.0
wrapper 5.4.1Just double check that your project neither use @set:Inject or @Inject set structures.
@Inject
lateinit var: Somewould be enough

I get the same error on 2.24 too.
However, I was able to build after changing the SDK location AdoptOpenJDK 8 or Amazon Corretto 8.
/usr/libexec/java_home -V
Matching Java Virtual Machines (2):
1.8.0_222, x86_64: "Amazon Corretto 8" /Library/Java/JavaVirtualMachines/amazon-corretto-8.jdk/Contents/Home
1.8.0_222, x86_64: "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
I got exactly the same issue after Android Studio was updated to the version 3.5
I fixed this issue in 4 steps:
kotlinOptions {
jvmTarget = "1.8"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
Upgraded dagger from _2.22.1_ to _2.24_
Disabled incremental kapt in gradle.properties
kapt.incremental.apt=false
Invalidated build cache, restarted Android Studio and rebuilt the project
Note, that the CI build is working all the time.
I got exactly the same issue after Android Studio was updated to the version 3.5
I fixed this issue in 4 steps:
- Added kotlinOptions section with jvmTarget into _app/build.gradle_
kotlinOptions { jvmTarget = "1.8" }
(the section compileOptions is already there)
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }- Upgraded dagger from _2.22.1_ to _2.24_
- Disabled incremental kapt in gradle.properties
kapt.incremental.apt=false- Invalidated build cache, restarted Android Studio and rebuilt the project
Note, that the CI build is working all the time.
Didn't help in my case :(
I see this on 2.25.2 specifically with JDK 11. Appears to work fine with JDK 8.
Repro: https://github.com/ZacSweers/CatchUp/pull/204
JAVA_HOME: /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
Command: ./gradlew clean :app:assembleDebug --no-build-cache --stacktrace
Caused by: java.lang.IllegalArgumentException: not a valid name: [email protected] intArray
at com.squareup.javapoet.Util.checkArgument(Util.java:53)
at com.squareup.javapoet.MethodSpec$Builder.<init>(MethodSpec.java:295)
at com.squareup.javapoet.MethodSpec$Builder.<init>(MethodSpec.java:279)
at com.squareup.javapoet.MethodSpec.methodBuilder(MethodSpec.java:173)
at dagger.internal.codegen.writing.PrivateMethodBindingExpression.addMethod(PrivateMethodBindingExpression.java:66)
at dagger.internal.codegen.writing.MethodBindingExpression.getDependencyExpression(MethodBindingExpression.java:82)
at dagger.internal.codegen.writing.ComponentBindingExpressions.getDependencyExpression(ComponentBindingExpressions.java:127)
at dagger.internal.codegen.writing.ComponentBindingExpressions.getDependencyArgumentExpression(ComponentBindingExpressions.java:195)
at dagger.internal.codegen.writing.MembersInjectionMethods.lambda$membersInjectionMethod$0(MembersInjectionMethods.java:117)
at dagger.internal.codegen.writing.InjectionMethods$InjectionSiteMethod.invoke(InjectionMethods.java:345)
at dagger.internal.codegen.writing.InjectionMethods$InjectionSiteMethod.lambda$invokeAll$0(InjectionMethods.java:315)
at com.google.common.collect.CollectSpliterators$1WithCharacteristics.lambda$forEachRemaining$1(CollectSpliterators.java:64)
at com.google.common.collect.CollectSpliterators$1WithCharacteristics.forEachRemaining(CollectSpliterators.java:64)
at dagger.internal.codegen.writing.InjectionMethods$InjectionSiteMethod.invokeAll(InjectionMethods.java:323)
at dagger.internal.codegen.writing.MembersInjectionMethods.membersInjectionMethod(MembersInjectionMethods.java:109)
at dagger.internal.codegen.base.Util.reentrantComputeIfAbsent(Util.java:33)
at dagger.internal.codegen.writing.MembersInjectionMethods.getOrCreate(MembersInjectionMethods.java:79)
at dagger.internal.codegen.writing.MembersInjectionBindingExpression.membersInjectionInvocation(MembersInjectionBindingExpression.java:70)
at dagger.internal.codegen.writing.MembersInjectionBindingExpression.getComponentMethodImplementation(MembersInjectionBindingExpression.java:64)
at dagger.internal.codegen.writing.ComponentBindingExpressions.getComponentMethod(ComponentBindingExpressions.java:220)
at dagger.internal.codegen.ComponentImplementationBuilder.addInterfaceMethods(ComponentImplementationBuilder.java:171)
at dagger.internal.codegen.ComponentImplementationBuilder.build(ComponentImplementationBuilder.java:136)
at dagger.internal.codegen.ComponentImplementationBuilder.buildChildImplementation(ComponentImplementationBuilder.java:271)
at dagger.internal.codegen.ComponentImplementationBuilder.addChildComponents(ComponentImplementationBuilder.java:257)
at dagger.internal.codegen.ComponentImplementationBuilder.build(ComponentImplementationBuilder.java:137)
at dagger.internal.codegen.ComponentImplementationBuilder.buildChildImplementation(ComponentImplementationBuilder.java:271)
at dagger.internal.codegen.ComponentImplementationBuilder.addChildComponents(ComponentImplementationBuilder.java:257)
at dagger.internal.codegen.ComponentImplementationBuilder.build(ComponentImplementationBuilder.java:137)
at dagger.internal.codegen.ComponentImplementationFactory.createComponentImplementationUncached(ComponentImplementationFactory.java:84)
at dagger.internal.codegen.ComponentImplementationFactory.lambda$createComponentImplementation$0(ComponentImplementationFactory.java:60)
at dagger.internal.codegen.base.Util.reentrantComputeIfAbsent(Util.java:33)
at dagger.internal.codegen.ComponentImplementationFactory.createComponentImplementation(ComponentImplementationFactory.java:57)
at dagger.internal.codegen.ComponentGenerator.write(ComponentGenerator.java:70)
at dagger.internal.codegen.ComponentGenerator.write(ComponentGenerator.java:39)
at dagger.internal.codegen.base.SourceFileGenerator.generate(SourceFileGenerator.java:77)
at dagger.internal.codegen.base.SourceFileGenerator.generate(SourceFileGenerator.java:69)
at dagger.internal.codegen.ComponentProcessingStep.generateComponent(ComponentProcessingStep.java:170)
at dagger.internal.codegen.ComponentProcessingStep.processRootComponent(ComponentProcessingStep.java:152)
at dagger.internal.codegen.ComponentProcessingStep.process(ComponentProcessingStep.java:131)
at dagger.internal.codegen.ComponentProcessingStep.process(ComponentProcessingStep.java:62)
at dagger.internal.codegen.validation.TypeCheckingProcessingStep.lambda$process$0(TypeCheckingProcessingStep.java:51)
at com.google.common.collect.RegularImmutableMap.forEach(RegularImmutableMap.java:185)
at dagger.internal.codegen.validation.TypeCheckingProcessingStep.process(TypeCheckingProcessingStep.java:48)
at dagger.internal.codegen.ComponentProcessingStep.process(ComponentProcessingStep.java:124)
at dagger.internal.codegen.ComponentProcessingStep.process(ComponentProcessingStep.java:62)
at dagger.internal.codegen.statistics.DaggerStatisticsCollectingProcessingStep.process(DaggerStatisticsCollectingProcessingStep.java:52)
at dagger.shaded.auto.common.BasicAnnotationProcessor.process(BasicAnnotationProcessor.java:330)
at dagger.shaded.auto.common.BasicAnnotationProcessor.process(BasicAnnotationProcessor.java:181)
at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.process(incrementalProcessors.kt)
at org.jetbrains.kotlin.kapt3.base.ProcessorWrapper.process(annotationProcessing.kt:147)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:980)
... 38 more
Have you seen this article?
https://www.donnfelker.com/dagger-open-jdk-version-mismatch/
When changing the jdk location in the module settings to what I'm running Android Studio with I no longer get this problem.
My jdk location: /usr/lib/jvm/java-1.8.0-openjdk
This links to my current jdk which is /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.fc31.x86_64 as seen below:
$ java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
Hit this again today:
JDK 11.0.8
Kotlin 1.4.10
Dagger 2.28.3
@Singleton
class FooClass @Inject constructor(
thingProvider: ThingProvider
) : FooTracker(thingProvider) {
var myVar: Boolean = false
.....
}
Which produces bytecode like:
// access flags 0x11
public final setMyVar(Z)V
// annotable parameter count: 1 (visible)
// annotable parameter count: 1 (invisible)
L0
LINENUMBER 13 L0
ALOAD 0
ILOAD 1
PUTFIELD com/example/FooClass.myVar : Z
RETURN
L1
LOCALVARIABLE this Lcom/example/FooClass; L0 L1 0
LOCALVARIABLE <set-?> Z L0 L1 1
MAXSTACK = 2
MAXLOCALS = 2
Looks like <set-?> is a local variable name?
and we get this exception...
Caused by: com.sun.tools.javac.processing.AnnotationProcessingError: java.lang.IllegalArgumentException: not a valid name: <set-?>Provider
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:992)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:896)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1222)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1334)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1258)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1157)
... 38 more
Caused by: java.lang.IllegalArgumentException: not a valid name: <set-?>Provider
at com.squareup.javapoet.Util.checkArgument(Util.java:53)
at com.squareup.javapoet.FieldSpec.builder(FieldSpec.java:91)
at dagger.internal.codegen.writing.MembersInjectorGenerator.write(MembersInjectorGenerator.java:177)
at dagger.internal.codegen.writing.MembersInjectorGenerator.write(MembersInjectorGenerator.java:73)
at dagger.internal.codegen.base.SourceFileGenerator.generate(SourceFileGenerator.java:77)
at dagger.internal.codegen.validation.InjectBindingRegistryImpl$BindingsCollection.generateBindings(InjectBindingRegistryImpl.java:97)
at dagger.internal.codegen.validation.InjectBindingRegistryImpl.generateSourcesForRequiredBindings(InjectBindingRegistryImpl.java:191)
at dagger.internal.codegen.ComponentProcessor.postRound(ComponentProcessor.java:198)
at dagger.shaded.auto.common.BasicAnnotationProcessor.process(BasicAnnotationProcessor.java:183)
at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.process(incrementalProcessors.kt)
at org.jetbrains.kotlin.kapt3.base.ProcessorWrapper.process(annotationProcessing.kt:161)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:980)
... 43 more
Most helpful comment