2017-10-04 4 views
-1

Lorsque j'essaie de créer un projet de génération de fichiers Dagger, la construction échoue avec une exception. Pourriez-vous s'il vous plaît dites-moi comment le réparer ou au moins dans quelle direction regarder.Crash dagger lors de la construction du projet

e: /home/hodzi/Projects/StudioProjects/StackViewer/app/build/tmp/kapt3/stubs/debug/com/hodzi/stackviewer/di/AppComponent.java:6: error: [com.hodzi.stackviewer.questions.di.QuestionsComponent] com.hodzi.stackviewer.questions.di.QuestionsComponent has conflicting scopes: e:

e: public abstract interface AppComponent { e: ^e:
com.hodzi.stackviewer.di.AppComponent also has @Singleton e: java.lang.IllegalStateException: failed to analyze: org.jetbrains.kotlin.kapt3.diagnostic.KaptError: Error while annotation processing at org.jetbrains.kotlin.analyzer.AnalysisResult.throwIfError(AnalysisResult.kt:57) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules(KotlinToJVMBytecodeCompiler.kt:138) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:154) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:58) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:103) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:51) at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:92) at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$1$2.invoke(CompileServiceImpl.kt:386) at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$1$2.invoke(CompileServiceImpl.kt:96) at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:889) at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:96) at org.jetbrains.kotlin.daemon.common.DummyProfiler.withMeasure(PerfUtils.kt:137) at org.jetbrains.kotlin.daemon.CompileServiceImpl.checkedCompile(CompileServiceImpl.kt:916) at org.jetbrains.kotlin.daemon.CompileServiceImpl.doCompile(CompileServiceImpl.kt:888) at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:385) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 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:324) 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:568) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: org.jetbrains.kotlin.kapt3.diagnostic.KaptError: Error while annotation processing at org.jetbrains.kotlin.kapt3.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:90) at org.jetbrains.kotlin.kapt3.AnnotationProcessingKt.doAnnotationProcessing$default(annotationProcessing.kt:42) at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.runAnnotationProcessing(Kapt3Extension.kt:205) at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.analysisCompleted(Kapt3Extension.kt:166) at org.jetbrains.kotlin.kapt3.ClasspathBasedKapt3Extension.analysisCompleted(Kapt3Extension.kt:82) at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM$analyzeFilesWithJavaIntegration$2.invoke(TopDownAnalyzerFacadeForJVM.kt:96) at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.kt:106) at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration$default(TopDownAnalyzerFacadeForJVM.kt:83) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:377) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:68) at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:96) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:368) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules(KotlinToJVMBytecodeCompiler.kt:133) ... 30 more

Composants:

1) AppComponent

@Singleton 
@Component(modules = arrayOf(AppModule::class, NetModule::class)) 
interface AppComponent { 

    fun inject(app: App) 

    fun plus(questionsModule: QuestionsModule): QuestionsComponent 
} 

2) QuestionsComponent

@Singleton 
@Subcomponent(modules = arrayOf(QuestionsModule::class)) 
interface QuestionsComponent { 
    fun inject(questionsActivity: QuestionsActivity) 
} 

Modules:

1) AppModule

@Module 
class AppModule(val application: Application) { 

    @Provides 
    @Singleton 
    fun provideApplication(): Context = application 

    @Provides 
    @Singleton 
    fun provideSharedPrefs(context: Context): SharedPreferences = 
      context.getSharedPreferences(context.packageName, Context.MODE_PRIVATE) 
} 

2) QuestionsModule

@Module 
class QuestionsModule { 
    @Provides @Singleton 
    fun provideQuestionsPresenter(questionsInteractor: QuestionsInteractor): QuestionsPresenter = 
     QuestionsPresenter(questionsInteractor) 

    @Provides @Singleton 
    fun provideQuestionsInteractor(api : Api): QuestionsInteractor = QuestionsInteractor(api) 
} 

App:

class App : Application() { 
    val appComponent: AppComponent by lazy { 
     DaggerAppComponent.builder() 
      .netModule(NetModule()) 
      .appModule(AppModule(this)) 
      .build() 

    } 

    val questionsComponent: QuestionsComponent by lazy { 
     appComponent.plus(QuestionsModule()) 
    } 

    override fun onCreate() { 
     super.onCreate() 
     Injector.inject(this) 
     NetUtils.init(this) 
    } 
} 

Si elle aide alors je joins un lien vers le githab

Répondre

2

Vous » défini à la fois AppComponent et QuestionsComponent comme @Singleton, alors lequel est responsable de cette portée? C'est exactement ce que l'erreur dit. Supprimer l'annotation de l'un d'entre eux.

+0

Lorsque je supprime un singleton, j'obtiens «(non délimité) peut ne pas référencer les liaisons scopées» –

+0

@Valeriy Vous devez donc définir votre propre étendue personnalisée. Le tutoriel que vous suivez devrait couvrir cette –