Injecting generated source with Dagger V2

833 views
Skip to first unread message

Travis Schmidt

unread,
Feb 23, 2015, 3:30:02 PM2/23/15
to dagger-...@googlegroups.com
I am getting the following error when I do a full build after cleaning my project using Dagger V2.

java.lang.IllegalArgumentException: OrganizationViewImpl cannot be represented as a Class<?>.
at com.google.auto.common.MoreTypes$16.defaultAction(MoreTypes.java:628)
at com.google.auto.common.MoreTypes$16.defaultAction(MoreTypes.java:626)
at javax.lang.model.util.SimpleTypeVisitor6.visitError(SimpleTypeVisitor6.java:168)
at org.eclipse.jdt.internal.compiler.apt.model.ErrorTypeImpl.accept(ErrorTypeImpl.java:88)
at com.google.auto.common.MoreTypes.isTypeOf(MoreTypes.java:626)
at dagger.internal.codegen.DependencyRequest$Factory.extractKindAndType(DependencyRequest.java:181)
at dagger.internal.codegen.DependencyRequest$Factory.newDependencyRequest(DependencyRequest.java:156)
at dagger.internal.codegen.DependencyRequest$Factory.forRequiredResolvedVariable(DependencyRequest.java:125)
at dagger.internal.codegen.DependencyRequest$Factory.forRequiredResolvedVariables(DependencyRequest.java:86)
at dagger.internal.codegen.ProvisionBinding$Factory.forInjectConstructor(ProvisionBinding.java:189)
at dagger.internal.codegen.InjectBindingRegistry.getOrFindProvisionBinding(InjectBindingRegistry.java:244)
at dagger.internal.codegen.BindingGraph$Factory$RequestResolver.lookUpBindings(BindingGraph.java:232)
at dagger.internal.codegen.BindingGraph$Factory$RequestResolver.resolve(BindingGraph.java:275)
at dagger.internal.codegen.BindingGraph$Factory.create(BindingGraph.java:156)
at dagger.internal.codegen.ComponentProcessingStep.process(ComponentProcessingStep.java:76)
at com.google.auto.common.BasicAnnotationProcessor.process(BasicAnnotationProcessor.java:222)
at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:139)
at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.round(RoundDispatcher.java:121)
at org.eclipse.jdt.internal.compiler.apt.dispatch.BaseAnnotationProcessorManager.processAnnotations(BaseAnnotationProcessorManager.java:159)
at org.eclipse.jdt.internal.apt.pluggable.core.dispatch.IdeAnnotationProcessorManager.processAnnotations(IdeAnnotationProcessorManager.java:134)
at org.eclipse.jdt.internal.compiler.Compiler.processAnnotations(Compiler.java:818)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:434)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:367)
at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.compile(BatchImageBuilder.java:179)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:304)
at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:61)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:256)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:175)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:299)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:302)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:358)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:381)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

OrganizationViewImpl is a class this is generated from my own annotation processor that is run before the Dagger processor.  If I alter my @Component source to run the Dagger process again then this class is found and everything works.  I am assuming I am getting this because there is no compiled version of this class the first time the Dagger processor is run.

I am new to annotation processing and DI.  So I guess what I need to know is : 

Is this situation just not allowed or not designed in Dagger?  
A true bug in Dagger? 
Could I just be doing something wrong in my own processor?  
Headed down a bad design path and need to turn around?

Thanks
Travis

Александр Мирко

unread,
Mar 17, 2015, 7:17:00 AM3/17/15
to dagger-...@googlegroups.com
I had the same problem when I lost corresponding import of inject object (import ...OrganizationViewImpl for your case)
Reply all
Reply to author
Forward
0 new messages