2013-10-11 3 views
9

मैं एंड्रॉइड एनोटेटेड गतिविधि में इंजेक्ट करने के लिए डैगर का उपयोग करने की कोशिश कर रहा हूं।AndroidAnnotations और 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.

अगर मैं कोशिश करते हैं और मॉड्यूल के लिए com.app.server.AddServerActivity_ जोड़ें मैं एक अलग त्रुटि मिलती है

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 

संपादित करें: ठीक है, यह द्वारा उत्पन्न वर्गों के साथ कैसे कटार सौदों के साथ एक ज्ञात समस्या हो रहा है अन्य प्रोसेसर।

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

+1

अब आप AndroidAnnotations के नवीनतम स्नैपशॉट में डैगर का उपयोग कर सकते हैं, हम सभी एनोटेशन जेनरेटेड क्लासेस में कॉपी करते हैं। – WonderCsabo

+0

मुझे maven.org पर या Google खोज के माध्यम से नवीनतम स्नैपशॉट खोजने में असमर्थ प्रतीत होता है। क्या आप इसे मुझे इंगित कर सकते हैं कि मैं उस स्नैपशॉट को कहां से प्राप्त कर सकता हूं? – imgen

+1

@imgen [यहां] (https://oss.sonatype.org/content/repositories/snapshots/org/androidannotations/)। लेकिन हमने पहले ही उस कॉपी फीचर के साथ एक स्थिर संस्करण जारी किया है। – WonderCsabo

उत्तर

0

मैं सुझाव है कि आप Dagger2 उपयोग करते हैं, जिसका उपयोग अधिक "प्राकृतिक" लगता है।

0

यह issue डैगर के 709a48b प्रतिबद्ध के रूप में तय किया गया था।

सहयोगी cgruber नवंबर 13, 2013

यह दो स्थानों पर मान्य किया गया है टिप्पणी की है, इसलिए मैं इस मुद्दे को बंद कर रहा हूँ।

फिर भी, डैगर 2 का उपयोग करके, जो Google और वर्ग का संयुक्त प्रयास है, एक अच्छा विचार प्रतीत होता है।

संबंधित मुद्दे