2013-10-11 17 views
9

Sto cercando di utilizzare Dagger per iniettare in un'attività annotata Android.AndroidAnnotations and Dagger

java.lang.IllegalArgumentException: No inject registered for members/com.app.server.AddServerActivity_. You must explicitly add it to the 'injects' option in one of your modules.

Se provo e aggiungere il com.app.server.AddServerActivity_ al modulo ottengo un errore di differente

Error: java.lang.ClassCastException: com.sun.tools.javac.code.Attribute$Error cannot be cast to com.sun.tools.javac.code.Attribute$Class 
java.lang.RuntimeException: java.lang.ClassCastException: com.sun.tools.javac.code.Attribute$Error cannot be cast to com.sun.tools.javac.code.Attribute$Class 
    at com.sun.tools.javac.main.Main.compile(Main.java:469) 
    at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:132) 
    at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:167) 
    at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:364) 
    at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:276) 
    at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:190) 
    at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:162) 
    at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1018) 
    at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:742) 
    at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:790) 
    at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:705) 
    at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:526) 
    at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:314) 
    at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:179) 
    at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:129) 
    at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:220) 
    at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:112) 
    at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler$1.run(BuildMain.java:132) 
    at org.jetbrains.jps.service.impl.SharedThreadPoolImpl$1.run(SharedThreadPoolImpl.java:41) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:722) 
Caused by: java.lang.ClassCastException: com.sun.tools.javac.code.Attribute$Error cannot be cast to com.sun.tools.javac.code.Attribute$Class 
    at com.sun.tools.javac.model.AnnotationProxyMaker$ValueVisitor.visitArray(AnnotationProxyMaker.java:190) 
    at com.sun.tools.javac.code.Attribute$Array.accept(Attribute.java:215) 
    at com.sun.tools.javac.model.AnnotationProxyMaker$ValueVisitor.getValue(AnnotationProxyMaker.java:165) 
    at com.sun.tools.javac.model.AnnotationProxyMaker.generateValue(AnnotationProxyMaker.java:143) 
    at com.sun.tools.javac.model.AnnotationProxyMaker.getAllReflectedValues(AnnotationProxyMaker.java:101) 
    at com.sun.tools.javac.model.AnnotationProxyMaker.generateAnnotation(AnnotationProxyMaker.java:86) 
    at com.sun.tools.javac.model.AnnotationProxyMaker.generateAnnotation(AnnotationProxyMaker.java:78) 
    at com.sun.tools.javac.model.JavacElements.getAnnotation(JavacElements.java:108) 
    at com.sun.tools.javac.model.JavacElements.getAnnotation(JavacElements.java:121) 
    at com.sun.tools.javac.code.Symbol$ClassSymbol.getAnnotation(Symbol.java:888) 
    at dagger.internal.codegen.ValidationProcessor.validateProvides(ValidationProcessor.java:75) 
    at dagger.internal.codegen.ValidationProcessor.process(ValidationProcessor.java:67) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:793) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:722) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1700(JavacProcessingEnvironment.java:97) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1029) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1163) 
    at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1108) 
    at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:824) 
    at com.sun.tools.javac.main.Main.compile(Main.java:439) 
    ... 24 more 

Edit: ok, sembra essere un problema noto con come offerte pugnale con classi generate da altri processori.

https://github.com/square/dagger/issues/322

+1

Ora è possibile utilizzare Dagger nell'ultimo SNAPSHOT di AndroidAnnotations, copiamo tutte le annotazioni nelle classi generate. – WonderCsabo

+0

Sembra che non riesca a trovare l'ultima istantanea su maven.org o tramite ricerca su google. Potresti indicarmelo da dove posso ottenere quella build di istantanee? – imgen

+1

@imgen [qui] (https://oss.sonatype.org/content/repositories/snapshots/org/androidannotations/). Ma abbiamo già rilasciato una versione stabile con quella funzione di copia. – WonderCsabo

risposta

0

Vi suggerisco di utilizzare Dagger2, il cui utilizzo sembra più "naturale".

0

Questo issue è stato risolto a partire dal commit 709a48b di Dagger.

Collaboratore cgruber commentato Nov 13, 2013

Questo è stato convalidato in due punti, quindi sto chiudendo questo problema.

Ancora, usare Dagger2, che è uno sforzo congiunto di google e quadrato, sembra una buona idea.